首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JPA Criteria builder IN子句查询

JPA Criteria builder IN子句查询
EN

Stack Overflow用户
提问于 2017-03-01 19:36:37
回答 5查看 89.5K关注 0票数 43

如何为下面给定的JPQL查询编写criteria builder api查询?我正在使用JPA 2.2

代码语言:javascript
运行
复制
SELECT * 
FROM Employee e
WHERE e.Parent IN ('John','Raj')
ORDER BY e.Parent
EN

回答 5

Stack Overflow用户

发布于 2017-03-01 20:15:24

这个标准设置应该可以做到这一点:

代码语言:javascript
运行
复制
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Employee> q = cb.createQuery(Employee.class);


Root<Employee> root = q.from(Employee.class);
q.select(root);

List<String> parentList = Arrays.asList(new String[]{"John", "Raj"});

Expression<String> parentExpression = root.get(Employee_.Parent);
Predicate parentPredicate = parentExpression.in(parentList);
q.where(parentPredicate);
q.orderBy(cb.asc(root.get(Employee_.Parent));

q.getResultList();

我在这里使用了重载的CriteriaQuery.where方法,它接受一个Predicate。本例中为in谓词。

票数 74
EN

Stack Overflow用户

发布于 2019-01-24 04:51:53

您也可以使用Criteria API In子句来执行此操作,如下所示:

代码语言:javascript
运行
复制
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Employee> cq = cb.createQuery(Employee.class);
Root<Employee> root = cq.from(Employee.class);
List<String> parentList = Arrays.asList("John", "Raj");
In<String> in = cb.in(root.get(Employee_parent));
parentList.forEach(p -> in.value(p));

return entityManager
        .createQuery(cq.select(root)
        .where(in).orderBy(cb.asc(root.get(Employee_.Parent)))
        .getResultList();

请查看我的Github,了解这一点以及几乎所有可能的标准示例。

票数 12
EN

Stack Overflow用户

发布于 2020-04-30 21:38:28

代码语言:javascript
运行
复制
List<String> parentList = Arrays.asList("John", "Raj");            
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
final CriteriaQuery<Employee> query = cb.createQuery(Employee.class);
final Root<Employee> employee = query.from(Employee.class);

query.select(employee).where(employee.get("Parent").in(parentList));

这应该可以很好地工作。有关更多信息,请参考baeldung的这篇文章。它是非常足智多谋的https://www.baeldung.com/jpa-criteria-api-in-expressions

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

https://stackoverflow.com/questions/42530677

复制
相关文章

相似问题

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