2017-03-01 4 views
6

Wie schreibe ich Criteria Builder API-Abfrage für unten angegebene JPQL-Abfrage? Ich verwende JPA 2.2.JPA Criteria Builder IN Klausel Abfrage

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

Antwort

9

Diese Kriterien Set-up den Trick tun soll:

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

ich die überladene CriteriaQuery.where Methode, die hier verwendet, der ein Predicate akzeptiert .. ein in Prädikat in diesem Fall.

+0

Vielen Dank !! – Raj

+0

Offtopic: Danke für die Bearbeitung dieser einen Antwort von mir ;-) – GhostCat

Verwandte Themen