2017-03-02 1 views

Antwort

0

Wenn Sie nach einem criteriaQuery ohne beitreten suchen, eine Unterabfrage:

CriteriaBuilder criteriaBuilder = entityManger.getCriteriaBuilder(); 
CriteriaQuery<Employee> query = criteriaBuilder.createQuery(Employee.class); 
Root<Employee> baseRoot = query.from(Employee.class); 

Subquery<Department> subquery = query.subquery(Department.class); 
Root<Department> subroot = subquery.from(Department.class); 
subquery.select(subroot.get("empName")); 
subquery.where(subroot.get("empParentName").in(nameList)); 

query.where(baseRoot.get("empName").in(subquery)); 
query.orderBy(criteriaBuilder.asc(baseRoot.get("empName"))); 
List<Employee> result = entityManager.createQuery(query).getResultList(); 

Da Entitäten nicht hinzugefügt werden, gehe ich davon aus, dass "empName" der Variablenname der Spalte emp_name in der Mitarbeiter- und Abteilungsklasse und emPParentName für emp_parentName ist. nameList ist die Liste der Namen, nach denen Sie filtern möchten.

Verwandte Themen