Hibernate の基準とコレクションを扱うのに苦労しています。
私は次の関係を持っています:
- A には B の多くの要素があります
- A は C の要素を 1 つ持つ
- C には D の多くの要素があります
- D は E の要素を 1 つ持つ
だから基本的に
E <----1---- D <---- ---- C <----1---- A ----- ----> B
C要素がCの属性の特定の条件を検証し、さらに特定のEに関連する要素Dを少なくとも1つ持っているAのすべての要素を取得しようとしています.
だから、これはこれまでの私の基準です:
session.createCriteria(A.class)
.createCriteria("Cs")
.add(Restrictions.or(Restrictions.eq("attributeA", 1), Restrictions.eq("attributeB", 2)))
.createCriteria("Ds")
.createCriteria("E")
.add(Restrictions.eq("id", 123);
これは問題なく動作しますが、結果として Hibernate から取得している sql は、必要のない C、D、および E のすべての属性を選択します (それらでフィルタリングする必要があるだけです)。これらを制限し、それらの関係のみをフィルタリングに使用するにはどうすればよいですか?
また、要素 B をフェッチする必要があります。そうしないと、個別に初期化する必要があるコレクションを取得するため、より多くのクエリが発生します。それらを含む基準を作成するにはどうすればよいですか?