不使用CriteriaQuery#select():
public List<Address> getAddressOfManager(String designation, String name, String orderByColumn) {
Boolean ascending = false;
CriteriaBuilder cb = emanager.getCriteriaBuilder();
CriteriaQuery<Address> cq = cb.createQuery(Address.class);
Root<Address> root = cq.from(Address.class);
//cq.select(root); <-------------
Join<Address, Employee> employeeAddress = root.join(Address_.employee);
Join<Employee,Project> employeeProject = employeeAddress.join(Employee_.project);
cq.where(cb.or(cb.equal(employeeProject.get(Project_.name), name),cb.equal(employeeAddress.get(Employee_.designation), designation)));
Order order = ascending ? cb.asc(root.get(orderByColumn))
: cb.desc(root.get(orderByColumn));
cq.orderBy(order);
List<Address> result = emanager.createQuery(cq).getResultList();
return result;
}
Run Code Online (Sandbox Code Playgroud)用CriteriaQuery#select():
public List<Address> getAddressOfManager(String designation, String name, String orderByColumn) {
Boolean ascending = false;
CriteriaBuilder cb = emanager.getCriteriaBuilder();
CriteriaQuery<Address> cq …Run Code Online (Sandbox Code Playgroud)