是否可以使用Multiselect在我的最终查询结果集中将查询结果用作列?
例如:
查询1:
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();
非常感谢任何帮助?
答案 0 :(得分:1)
刚才知道在Select语句中不能使用SubQueries。
根据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查询作为Tuple(Multiselect)实现这一点非常容易。 如果你们有任何更好的想法,请在这里分享。谢谢,快乐的编码。