在HQL查询中使用外连接

时间:2009-12-03 15:41:14

标签: java sql hibernate outer-join

我正在尝试使用HQL和OUTER JOIN来构建查询,但是无法让它工作。请考虑以下映射

<class name="Parent">
    <id name="id" type="integer">
      <generator class="native" />
    </id> 
</class>

<class name="Child">
    <id name="id" type="integer">
      <generator class="native" />
    </id> 
    <many-to-one name="parent"/>
</class>

现在我想得到所有父母的名单和父母子女的数量。假设我有一个父母有两个孩子,一个父母没有孩子。我希望输出像

+-------------------+
| parent | children |
+--------+----------+
|  1     | 2        |
|  2     | 0        |
+--------+----------+

使用普通的SQL根本不是问题,我会得到像

这样的输出
SELECT p.id as parent, count(c.id) as children from parents p LEFT OUTER JOIN children c on c.parent_id = p.id group by p.id;

然而,使用HQL似乎不可能使用HQL,因为在使用OUTER JOIN时需要从父对象路径,这显然是我没有的(并且还有不想添加。

任何有关如何使用HQL进行查询的想法,还是真的 - 我简直不敢相信 - 一个缺少的休眠功能?

1 个答案:

答案 0 :(得分:3)

切换查询应该有帮助

SELECT p.id as parent, count(c.id) as children from children c right outer join c.parent p group by p.id;