중간에 양방향 다 대다 관계가있는 범주 유형과 항목 유형이 있습니다. 이 관계의 양면은 게으르다. HQL이나 ICriteria에서 다음을 수행하는 쿼리를 작성하고 싶습니다. 카테고리의 ID가 주어지면 모든 항목을 (열심히로드하는) 해당 항목의 카테고리 컬렉션과 함께로드하십시오. 그런 쿼리는 어떻게 생겼을까요?Eagarly many-to-many 관계를로드 중
나는까지로 가지고 :
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);
}