2017-03-02 1 views

Répondre

0

Si vous cherchez un criteriaQuery sans se joindre à l'aide d'un sous-requête:

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

Comme les entités ne sont pas ajoutées, je suppose que "nomImage" est le nom de la variable de la colonne nom_emp dans les classes employee et department et empParentName pour emp_parentName. nameList est la liste des noms sur lesquels vous souhaitez filtrer.