如何为下面的语句编写criteria builder API JPA查询

如何为下面的语句编写criteria builder API JPA查询,jpa,jpa-2.0,jpql,openjpa,Jpa,Jpa 2.0,Jpql,Openjpa,我有两张员工和部门的桌子。我想为下面的语句编写标准BuiderAPI JPA查询 从Employee e中选择* emp_的名字在哪里 选择emp_名称 来自d部门 d.emp_父母的名字在“Ross”和“shane”中 按e.emp_name排序如果您正在使用子查询查找没有联接的criteriaQuery: CriteriaBuilder criteriaBuilder = entityManger.getCriteriaBuilder(); CriteriaQuery<Employee

我有两张员工和部门的桌子。我想为下面的语句编写标准BuiderAPI JPA查询

从Employee e中选择*

emp_的名字在哪里

选择emp_名称 来自d部门 d.emp_父母的名字在“Ross”和“shane”中


按e.emp_name排序

如果您正在使用子查询查找没有联接的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是emp_parentName的变量名。名称列表是要筛选的名称列表