首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当参数是动态的时,如何构建JPQL查询?

当参数是动态的时,如何构建JPQL查询?
EN

Stack Overflow用户
提问于 2011-09-08 17:00:40
回答 2查看 10.8K关注 0票数 3

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

类似于:

代码语言:javascript
复制
query = "Select from Ent"
if(parameter!=null){
   query += "WHERE field=:parameter"
}
if(parameter2!=null) {
   query += "WHERE field2=:parameter2"
}

但是我会写两次WHERE!随著参数个数的增加,随著参数的增加,随机性的增加而爆炸。因为none或all最终都可能为空。

对于以适当的方式基于过滤器构建这些查询,有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2017-04-14 12:04:25

代码语言:javascript
复制
select * from Ent    
    where (field1 = :parameter1 or :parameter1 is null)       
    and (field2 = :parameter2 or :parameter2 is null)
票数 5
EN

Stack Overflow用户

发布于 2011-09-08 17:03:05

为什么你不能用标准呢,like this

其他选项(不太好的imho):

创建两个named queries,每个条件一个,然后调用相应的查询。

或者构建一个字符串并使用native query

哦,你的意思是字符串的形成(?):

代码语言:javascript
复制
query = "Select from Ent where 1=1 "
if(parameter!=null){
   query += " and field=:parameter"
}
if(parameter2!=null) {
   query += " and field2=:parameter2"
}

(我认为字符串的形成是丑陋的,但它似乎是所要求的)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7345571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档