8

私はこのような構造を持っています:

  • A には B のコレクションが含まれます (not-lazy としてマップされます)
  • B には C のコレクションが含まれます (not-lazy としてマップされます)

C オブジェクトを含まない B オブジェクトを含む A オブジェクトを取得するクエリを作成したいと思います。それは可能ですか?逆の方法もうまくいきます (BC リレーションが遅延マッピングされ、クエリが B と C を含む A を取得する場合)。

ありがとう!

4

1 に答える 1

9

いいえ、できません。アソシエーション自体を熱心にロードするようにマークしたため、Hibernate は常にこのアソシエーションを積極的にロードします。

アソシエーションを遅延 (toMany アソシエーションのデフォルト) としてマークすると、以下を使用して、クエリでそれらを熱心にフェッチするオプションがありますjoin fetch

select a from A a left join fetch a.bs b left join fetch b.cs

両方のコレクションがバッグ (つまり、インデックス列のないリスト) の場合、これは機能しないことに注意してください。

于 2012-05-14T13:09:59.803 に答える