3

我正在尝试使用 HQL 和OUTER JOINs 构建查询,但无法正常工作。考虑以下映射

<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 似乎是不可能的,因为在使用 a 时需要一条从 Parent 到 Child的路径OUTER JOIN,而我显然没有(也不想添加)。

有什么想法可以让查询使用 HQL 工作,还是真的 - 我不敢相信 - 缺少休眠功能?

4

1 回答 1

3

切换查询应该会有所帮助

SELECT p.id as parent, count(c.id) as children from children c right outer join c.parent p group by p.id;
于 2009-12-03T15:48:46.987 回答