我的HTML页面上有四个选择列表,选择这些选项时我正在检索数据。如何基于选择列表中的选择动态创建jqpl查询。
在我的情况下,有4个选择列表,用户可以从所有列表中选择选项,也可以将它们组合。在这种情况下如何编写查询?
我的查询类似于
SELECT x FROM tablename x WHERE x.column1= :choice1 AND x.column2 = :choice2 AND x.column3 = :choice3 AND x.column4 = :choice4
答案 0 :(得分:0)
我认为您可以尝试此Criteria API
答案 1 :(得分:0)
非常简单。您可以使用Map
在每个条件中保存参数,以验证choiceX是否存在。
示例:
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();