2017-03-01 118 views
6

如何編寫條件構建器API查詢以下給出的JPQL查詢?我正在使用JPA 2.2JPA Criteria構建器IN子句查詢

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

回答

9

此標準建立應該做的伎倆:

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謂詞在這種情況下。

+0

非常感謝你! – Raj

+0

Offtopic:感謝編輯我的一個答案;-) – GhostCat