2010-01-21 108 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