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