gpt4 book ai didi

java - 在 HQL 查询中使用外连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:04:33 24 4
gpt4 key购买 nike

我正在尝试使用 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 的名单和 parent 的 child 的数量。假设我有一个 parent 有两个 child 和一个没有 child 的 parent 。我期望这样的输出

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

关于如何使用 HQL 使查询工作的任何想法,或者它真的是 - 我简直不敢相信 - 缺少 hibernate 功能?

最佳答案

切换查询应该有帮助

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

关于java - 在 HQL 查询中使用外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1840748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com