エンティティ B との双方向の 1 または 0 対 1 マッピングを持つエンティティ A があるとします。
マッピングは次のとおりです。
<class name="EntityA" table="TABLE_A" mutable="true" lazy="true">
<id name="idA" type="long" column="pk_a" unsaved-value="null">
<generator class="sequence">
<param name="sequence">pk_a_seq</param>
</generator>
</id>
<one-to-one name="propertyB" class="EntityB" property-ref="propertyA" constrained="true" outer-join="false"/>
</class>
と
<class name="EntityB" table="TABLE_B" mutable="true" lazy="true">
<id name="idB" type="long" column="pk_b" unsaved-value="null">
<generator class="sequence">
<param name="sequence">pk_b_seq</param>
</generator>
</id>
<many-to-one name="propertyA" class="EntityA" not-null="true" unique="true" lazy="proxy" column="fk_a"/>
</class>
EntityA に対して hql クエリ (または名前付き hql クエリ) を実行すると、hibernate は別の select ステートメントで EntityA#propertyB を積極的に読み込みます。
それに関する私の問題は、私の hql が 1000 個の EntityA を返した場合 (すべてが独自の EntityB を持っている)、休止状態が n+1 クエリを実行することです (最初のクエリは 1000 の結果を返す EntityA 用であり、n 個のクエリは EntityA からのものです。 propertyB は遅延読み込みを選択します)。
ただし、これらの EntityA#propertyB は必要ありません。そのため、代わりにそれらを遅延ロードしたいのです (休止状態に別の SQL クエリを使用させることなく)。
それは可能ですか?もしそうなら、どうすればいいですか?
ありがとう、フランツ