2016-12-07 6 views
0

最近開始したプロジェクトでJPA 2.1のエンティティグラフ機能を使用することにしましたが、問題が発生しました。OneToMany関係の場合にEntityGraphを使用した重複結果

グラフをManyToOne関係に拡張するとうまくいくが、OneToManyでは、プロバイダ(Hibernate)が左外部結合を使用するため、結果が重複する。

私はこの問題に取り組むためにDistinct Keywordを思いついたいくつかの解決策を見ましたが、それは難しい解決策であると思います。次のレベルのEntities Distinctをどうやって得ることができますか?私が意味する

私は3つのエンティティA、BおよびC を持っている場合、私は、私はBがCにOneToManyの関係を有する場合、我々はAの内側など

答えて

1

にBの重複レコードを取得していないBに個別に使用しますわかりました

Distinctをクエリに追加すると、データベースから提供された結果にSQLが影響を与えないため、何が生成されますか?私の知る限りでは、です。。次に、DistinctまたはWithoutのデータベースから提供された結果(この場合)は同じになります。

しかしDistinctは、JPAまたはそのプロバイダに、結果セットの最も左のテーブルのレコードを取得することを明確にしています。。これが私たちが期待している結果につながるポイントです。

私が誤解した場合は、私を修正してください。

関連する問題