参数动态时如何构建 JPQL 查询?

Mr.*_*art 3 java hibernate ejb jpa jpql

我想知道是否有一个很好的解决方案来构建基于过滤器的 JPQL 查询(我的查询太“有表现力”,我不能使用 Criteria)。

就像是:

query = "Select from Ent"
if(parameter!=null){
   query += "WHERE field=:parameter"
}
if(parameter2!=null) {
   query += "WHERE field2=:parameter2"
}
Run Code Online (Sandbox Code Playgroud)

但我会写 WHERE 两次!!并且随着参数数量的增加,casuistic 会爆炸。因为最终没有或全部可能为空。

任何提示以正确的方式基于过滤器构建这些查询?

Abe*_*ich 5

select * from Ent    
    where (field1 = :parameter1 or :parameter1 is null)       
    and (field2 = :parameter2 or :parameter2 is null)
Run Code Online (Sandbox Code Playgroud)