2017-03-01 36 views
6

以下のJPQLクエリに対して条件ビルダーAPIクエリを記述する方法は? 私はJPA 2.2を使用しています。アップセットJPA Criteria builder 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(); 

私はこのケースでPredicate .. in述語を受け入れ、ここでオーバーロードさCriteriaQuery.where方法を使用していました。

+0

ありがとうございます! – Raj

+0

Offtopic:私の1つの答えを編集していただきありがとうございます;-) – GhostCat

関連する問題