私はこのHQLクエリを見つけました。コメントによると、LEFT JOIN
はHibernateに子テーブル内の関連するエンティティを熱心にロードさせ、結果セットの重複する親エンティティをフィルタリングするためにはDISTINCT
修飾子が必要であると言います。これらのコメントは理にかなっていますか?私は前にこの方法で結合を見たことがありません。Hibernate HQL:子エンティティを熱心に読み込むためにJOINを使用していますか?
SELECT DISTINCT p FROM Parent AS p
LEFT JOIN p.children AS c
WHERE p.state = 1
ORDER BY p.modified
注c
はWHERE
又はORDER BY
句で使用されていません。
単純にこのクエリを置き換えることは安全だろうと思われる:
SELECT p FROM Parent AS p
WHERE p.state = 1
ORDER BY p.modified
しかし、私はあるとして、元のクエリが書かれていた
正当な理由がある場合はわかりません。ドキュメントHibernateによると