2010-01-21 68 views
0

我在将本地SQL查询转换为HQL时遇到了问题。 查询是一样的东西如下:使用选择部分中的子选择将SQL查询转换为HQL

select count(*) 
, sum(select count(*) from employee e where e.company_id=c.id)) 
from company c where c.id = someID 

首先返回的值是数公司的,第二 - 量为指定的公司员工的。

I.e.我必须为id = someID的公司获取这两个值。

问题在于,hibernate不支持SELECT部分​​中的子选择,仅在WHERE中 - 按规范。

其实我可以:

1)使用本机查询通过EntityManager的运行此

2)做同样的划分这个“复杂”查询两个简单的SQL查询

但可能是有是否存在更方便的方法来实现HQL中的初始查询? - 这是一个问题。

谢谢。

回答

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