我正在尝试使用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进行查询的想法,还是真的 - 我简直不敢相信 - 一个缺少的休眠功能?
答案 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;