2

是否可以使用 Multiselect 将查询结果用作我的最终查询结果集中的列?

例如:

查询一:

select EMPLOYEE_NAME name, (Query 2) TOTAL_WORKING_DAYS FROM EMPLOYEE;

查询 2:

select COUNT(*) from WORKING_DAYS;

我正在尝试这个:

CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Tuple> criteriaQuery = criteriaBuilder.createTupleQuery();

Root<Employee> employeeRoot = criteriaQuery.from(Employee.class);
Path<String> employeeName = employeeRoot .get(Employee_.employeeName);

criteriaQuery.multiselect(employeeName , ??<This is the place where I am confused> );

List<Tuple> results = em.createQuery(criteriaQuery).getResultList();

任何帮助都受到高度赞赏?

4

1 回答 1

1

刚刚知道在 Select 语句中不可能有子查询。

根据 JPA 2.0 规范:

Subqueries may be used in the WHERE or HAVING clauses. 

所以我需要修改我的查询,如下所示:

SELECT 
      EMPLOYEE_NAME name,
      COUNT(*) TOTAL_WORKING_DAYS
FROM EMPLOYEE INNER JOIN WORKING_DAYS ON
      EMPLOYEE.WORKING_DAY = WORKING_DAYS.ID;

现在这很容易用 CriteriaBuilder 查询作为元组(多选)来实现。如果你们有更好的想法,请在这里分享。感谢和快乐的编码。

于 2013-08-19T11:23:29.590 回答