将原生SQL查询转换为HQL时遇到问题。 查询如下:
select count(*)
, sum(select count(*) from employee e where e.company_id=c.id))
from company c where c.id = someID
指定公司的第一个返回值是公司数量,第二个 - 员工数量。
即。我必须为id = someID的公司获得这两个值。
问题是hibernate不支持SELECT部分中的子选择,仅在WHERE中 - 通过规范。
其实我可以:
1)使用本机查询通过EntityManager
运行它2)将此“复杂”查询划分为两个更简单的SQL查询
但可能存在更方便的方法来实现HQL中的初始查询? - 这是一个问题。
谢谢。
答案 0 :(得分:1)
这可能有效:
select count(c.*) as count_companies
, c as count_emp
from company c
inner join
(
select company_id, count(*) as c
from employee
where employee.company_id = someID
group by company_id
) e
on e.company_id=c.id
group by c.id