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

时间:2011-06-18 13:17:17

标签: mysql sql jpa

如果某些作为参数传递的属性可以为空,那么如何在MySQL 5.1数据库的JPA命名查询的where子句中指定条件?

示例:该表包含可为空的attribute_1和不可为空的attribute_2。内容如下:

    id    attribute_1    attribute_2
    --    -----------    -----------
    1     {null}          123
    2     X               456

如果出现以下情况,查询结果应为记录1:param_1 = null AND:param_2 =“123”

如果出现以下情况,查询结果应为记录2:param_1 =“X”AND:param_2 =“456”

如果例如:param_1 =“X”AND:param_2 =“123”

,则查询应该没有结果

谢谢!

2 个答案:

答案 0 :(得分:1)

我通过使用本机查询解决了这个问题。我无法使用JP-QL查询。 我使用了条件

AND IF(?1 IS NULL, b.attribute_1 IS NULL, b.attribute_1 = ?1)
where子句中的

(?1是参数的占位符)。

答案 1 :(得分:0)

对于第一行,您需要更改查询中的where子句:

where attribute_1 is null

使用=代替不会产生任何行,因为a = null始终是null