首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >基于多选列表中提供/未提供的值动态生成jpql查询

基于多选列表中提供/未提供的值动态生成jpql查询
EN

Stack Overflow用户
提问于 2018-10-10 09:48:38
回答 2查看 28关注 0票数 1

我的HTML页面上有四个选项列表,当选择这些选项时,我将检索数据。如何基于选择列表上的选择动态创建jqpl查询。

在我的例子中,有4个选项列表,用户可以从所有列表中选择选项,也可以选择它们的组合。在这种情况下,我该如何编写查询?

我的查询类似于

代码语言:javascript
复制
SELECT x FROM tablename x WHERE x.column1= :choice1 AND x.column2 = :choice2 AND x.column3 = :choice3 AND x.column4 = :choice4
EN

回答 2

Stack Overflow用户

发布于 2018-10-10 10:33:41

我想你可以试试这个Criteria API

票数 0
EN

Stack Overflow用户

发布于 2018-10-24 07:31:21

非常简单。您可以使用Map保存每个条件中的参数,以验证choiceX是否存在。

示例:

代码语言:javascript
复制
String jpql = "SELECT x FROM tablename x WHERE 1 = 1 ";

Map<String, Object> parameters = new HashMap<>();

if (choice1 != null) {
    jpql += "x.column1 = :choice1 ";
    parameters.put("choice1", choice1);
}

if (choice2 != null) {
    jpql += "x.column2 = :choice2 ";
    parameters.put("choice2", choice2);
}

Query query = entityManager.createQuery(jpql);

for (Entry<String, Object> entry : parameters.entrySet()) {
    query.setParameter(entry.getKey(), entry.getValue());
}

return query.getResultList();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52731496

复制
相关文章

相似问题

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