HQL と s を使用してクエリを作成しようとしていますが、うまくいき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>
ここで、すべての親とその親の子の数のリストを取得したいと思います。2 人の子を持つ 1 つの親と、まったく子を持たない 1 つの親があるとします。次のような出力が期待されます。
+-------------------+
| 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を使用してクエリを機能させる方法はありますか、それとも本当に-信じられませんでした-休止状態の機能がありませんか?