将select-section中带有subselect的SQL查询转换为HQL

时间:2010-01-21 16:46:33

标签: sql hibernate hql

将原生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中的初始查询? - 这是一个问题。

谢谢。

1 个答案:

答案 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