我想知道是否有一个好的解决方案来构建一个基于过滤器的JPQL查询(我的查询太“有表现力”,我不能使用条件)。
类似于:
query = "Select from Ent"
if(parameter!=null){
query += "WHERE field=:parameter"
}
if(parameter2!=null) {
query += "WHERE field2=:parameter2"
}但是我会写两次WHERE!随著参数个数的增加,随著参数的增加,随机性的增加而爆炸。因为none或all最终都可能为空。
对于以适当的方式基于过滤器构建这些查询,有什么建议吗?
发布于 2017-04-14 12:04:25
select * from Ent
where (field1 = :parameter1 or :parameter1 is null)
and (field2 = :parameter2 or :parameter2 is null)发布于 2011-09-08 17:03:05
为什么你不能用标准呢,like this。
其他选项(不太好的imho):
创建两个named queries,每个条件一个,然后调用相应的查询。
或者构建一个字符串并使用native query。
哦,你的意思是字符串的形成(?):
query = "Select from Ent where 1=1 "
if(parameter!=null){
query += " and field=:parameter"
}
if(parameter2!=null) {
query += " and field2=:parameter2"
}(我认为字符串的形成是丑陋的,但它似乎是所要求的)
https://stackoverflow.com/questions/7345571
复制相似问题