JPA Criteria构建器IN子句查询 [英] JPA Criteria builder IN clause query

查看:478
本文介绍了JPA Criteria构建器IN子句查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How to write criteria builder api query for below given JPQL query? I am using JPA 2.2.

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


推荐答案

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

This criteria set-up should do the trick:

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

I have used the overloaded CriteriaQuery.where method here which accepts a Predicate.. an in predicate in this case.

这篇关于JPA Criteria构建器IN子句查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆