いくつかの追加の関連付けをフェッチするには、大きなHibernateDetachedCriteriaクエリを変更する必要があります。
私のオブジェクトグラフは以下の構造に似ています。各車に関連付けられた売上を取得したいと思います。
<class name="Showroom" table="showroom">
...
<bag name="cars" lazy="false">
<one-to-many class="Car" />
</bag>
...
</class>
<class name="Car" table="car">
...
<set name="sales" lazy="true">
<one-to-many class="Sale" />
</set>
...
</class>
私がやりたいことは次のようなものです:
DetachedCriteria criteria = DetachedCriteria.forClass(Showroom.class);
// ... Existing criteria query code ...
criteria.setFetchMode("cars.sales", FetchMode.JOIN);
しかし、setFetchModeのassociationPath引数はドット表記を無視しているようで、LazyInitializationExceptionが発生します。
原因:org.hibernate.LazyInitializationException:ロールのコレクションを遅延初期化できませんでした:Car.sales、セッションまたはセッションが閉じられていません
私は周りを検索しましたが、これまでのところ例や情報は見つかりませんでした。Hibernateのドキュメントには、ネストされた関連付けをフェッチする方法の例が記載されていません。setFetchModeのJavadocは、ドット表記アプローチが機能するはずだと示唆しているようです...
どんな助けでもいただければ幸いです。