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

标签 mysql sql jpa

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

示例:表包含可为空的 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"

谢谢!

最佳答案

我通过使用 native 查询解决了该问题。我无法让它与 JP-QL 查询一起使用。 我使用了条件

AND IF(?1 IS NULL, b.attribute_1 IS NULL, b.attribute_1 = ?1)

在 where 子句中(?1 是参数的占位符)。

关于以可为空属性作为参数的 JPA 命名查询的 where 子句中的 MySQL 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6396279/

相关文章:

mysql - 无法连接我的主机中的 mysql 数据库

sql - 使用 VBA 自动更新/复制 Microsoft Access 中的表

java - 截断要保存的字符串?

php - 在同一项目中使用 mysqli 将 App Engine 应用程序连接到 Google SQL 实例

c# mysql - 搜索框。搜索指定

mysql - 如果没有找到记录,sql 将值设为零

mysql根据当前项目选择相关项目

hibernate - 使用 hibernate @NamedNativeQuery 返回数值

java - 如何取消正在运行的 SQL 查询?

php - javascript - 从 mysql 获取附加字段并显示在表中