在以可为空的属性作为参数的JPA命名查询子句中的MySQL条件

问题描述

|| 如果作为参数传递的某些属性为空,如何在针对MysqL 5.1的JPA命名查询的子句中指定条件? 示例:该表包含可为空的attribute_1和不可为空的attribute_2。内容是:     id attribute_1 attribute_2     ------------ -----------     1 {null} 123     2 X 456 如果:param_1 = null AND:param_2 = \“ 123 \”,则查询结果应为记录1。 如果:param_1 = \“ X \” AND:param_2 = \“ 456 \”,则查询结果应为记录2。 例如,如果:param_1 = \“ X \” AND:param_2 = \“ 123 \”,查询将没有结果。 谢谢!     

解决方法

        我通过使用本机查询解决了问题。我无法在JP-QL查询中使用它。 我用了条件
AND IF(?1 IS NULL,b.attribute_1 IS NULL,b.attribute_1 = ?1)
在where子句中(?1是参数的占位符)。     ,        对于第一行,您需要更改查询中的where子句:
where attribute_1 is null
相反,使用
=
不会产生任何行,因为
a = null
始终是
null
。