首页 文章

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

提问于
浏览
0

我将本机SQL查询转换为HQL时遇到问题 . 查询如下:

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

对于指定公司,第一个返回值为 count of companies ,第二个 amount of employees .

即我必须为id = someID的公司获得这两个值 .

问题是hibernate不支持SELECT部分中的子选择,仅在WHERE中 - 通过规范 .

其实我可以:

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

2)将这个“复杂”查询分成两个更简单的SQL查询

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

谢谢 .

1 回答

  • 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
    

相关问题