2017-03-01 8 views
6

아래 제공된 JPQL 쿼리에 대한 criteria 빌더 API 쿼리를 작성하는 방법은 무엇입니까? JPA 2.2을 사용하고 있습니다. 설정이 트릭을 할해야JPA Criteria 빌더 IN 절 쿼리

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

답변

9

이 기준 : 나는 Predicate을 받아 여기에 오버로드 CriteriaQuery.where 방법을 사용했다

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(); 

..이 경우에 in 술어.

+0

정말 고마워요 !! – Raj

+0

Offtopic : 내 대답을 편집 해 주셔서 감사합니다 ;-) – GhostCat