我有两个表Employee和Department。我想为下面的语句编写Criteria buider API JPA查询。
SELECT * FROM Employee e
WHERE emp_name IN
(SELECT emp_name 来自部门d 在哪里d.emp_parentName IN(' Ross',' shane')
ORDER BY e.emp_name
答案 0 :(得分:0)
如果您正在寻找不带连接的criteriaQuery,请使用子查询:
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();
由于未添加实体,我假设“empName”是employee和department类中emp_name列的变量名,emp_parentName是empParentName。 nameList是您要筛选的名称列表。