JPA Criteria builder IN 子句查询

新手上路,请多包涵

如何为下面给定的 JPQL 查询编写条件生成器 api 查询?我正在使用 JPA 2.2

 SELECT *
FROM Employee e
WHERE e.Parent IN ('John','Raj')
ORDER BY e.Parent

原文由 Raj 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 655
1 个回答

这个标准设置应该可以解决问题:

 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 谓词。

原文由 Maciej Kowalski 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题