【问题标题】:Convert SQL-query with subselect in select section to HQL将选择部分中带有子选择的 SQL 查询转换为 HQL
【发布时间】:2011-01-07 20:02:54
【问题描述】:

我无法将原生 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中实现初始查询是否存在更方便的方法? - 这是一个问题。

谢谢。

【问题讨论】:

    标签: sql hibernate 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多