问题描述
||
如果作为参数传递的某些属性为空,如何在针对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
。