カテゴリ タイプとアイテム タイプがあり、その間に双方向の多対多の関係があります。この関係の両側は怠惰です。HQL または ICriteria で、次のことを行うクエリを作成したいと考えています。 カテゴリの ID を指定して、そのすべてのアイテムを、それらのアイテムのカテゴリ コレクションと共に (積極的に読み込みます) 読み込みます。そのようなクエリはどのようになりますか?
私は限りました:
session.CreateQuery( "from Category c left join fetch c.Items where c.ID = :cid" )
.SetParameter( "cid", ofCategory.ID )
.List();
しかし、各項目の Categories コレクションを熱心にロードする部分に収まる方法がわかりません。
すでに NHibernateUtil.Initialize() を使用して動作していることに注意してください。ただし、教育上の理由から、別の方法を試してみたいと思います。おそらく、よりエレガントな方法です。そのため、現在、関連する Item とカテゴリのインスタンスで最初に ISession.Lock() を呼び出してから、次のように機能しています。
foreach ( Item i in ofCategory.Items ) {
if ( !NHibernateUtil.IsInitialized(i.Categories) )
NHibernateUtil.Initialize( i.Categories );
}