Jpa 使用NamedQuery或Criteria API

Jpa 使用NamedQuery或Criteria API,jpa,criteria-api,Jpa,Criteria Api,我有一个复杂的查询,例如用姓名、年龄、地址等搜索员工 如果参数不为NULL,我想附加一个WHERE子句 例如(伪代码): 我想在XML文件中使用NamedQuery,但是NamedQuery不支持条件where-like-myBatis 有人能帮我解决这个问题吗 对于这个简单的情况/条件,您可以使用NamedQuery解决问题: SELECT e FROM Entity e WHERE (:age IS NULL) OR (:age IS NOT NULL and e.age=:age) 如果

我有一个复杂的查询,例如用姓名、年龄、地址等搜索员工 如果参数
不为NULL
,我想附加一个
WHERE
子句

例如(伪代码):

我想在
XML
文件中使用
NamedQuery
,但是
NamedQuery
不支持条件where-like-myBatis


有人能帮我解决这个问题吗

对于这个简单的情况/条件,您可以使用NamedQuery解决问题:

SELECT e FROM Entity e WHERE (:age IS NULL) OR (:age IS NOT NULL and e.age=:age)

如果您想要更复杂的查询(例如,按列动态排序),我会使用Criteria API。

答案在您问题的标题中:使用Criteria API。
SELECT e FROM Entity e WHERE (:age IS NULL) OR (:age IS NOT NULL and e.age=:age)