내가 선택한 개체의 하위 컬렉션을로드하려고합니다. 나는 기본적으로 두 개의 미래의 질의를 생성 한 다음 그 중 하나를 열거하여이를 수행하는 것의 this way을 모방하려고하고있다. 이 경우 데이터베이스에 대한 두 개의 쿼리가 생성됩니다.Future 및 HQL의 도움을 받아 하위 컬렉션을로드하는 것을 열망합니다.
var idd = session.CreateQuery("from ItemDeliveryDetail idd " +
"join fetch idd.ItemDelivery " +
"left join fetch idd.SupplierInvoice " +
"where idd.Id = 21931828")
.Future<ItemDeliveryDetail>();
var spc = session.CreateQuery("from SpecialCondition spc " +
"where spc.ItemDelivery " +
"in (select idd.ItemDelivery " +
"from ItemDeliveryDetail idd " +
"where idd.Id = 21931828)")
.Future<SpecialCondition>();
var result = idd.ToList();
마지막 줄은 실제로 데이터베이스에 대한 두 개의 쿼리를 생성합니다. 쿼리는 정확히 내가 기대하는 것입니다 (오랜 시간이 걸리며 질문과 관련이 있다고 생각하지 않지만 보려는 경우 here).
foreach (var itemDeliveryDetail in result)
{
foreach (var specialCondition in itemDeliveryDetail.ItemDelivery
.SpecialConditions)
{
// Do something
}
}
어떻게 그 문제를 해결하기 위해 :
문제는 두 쿼리의 결과 즉, 다음 열거 여전히 ItemDelivery
각각의 SpecialCondition
들에 대한 데이터베이스를 조회합니다, 결합되지인가?
3 개의 검색어가 필요하지 않습니까? 하나는 ItemDeliveryDetail, 하나는 ItemDelivery, 다른 하나는 SpecialConditions를 얻으려고합니까? – MerickOWA
'ItemDeliveryDetail' 쿼리에서'ItemDelivery'를 열심히 가져 오기 때문에 나는 그렇게 생각하지 않습니다. –
@MerickOWA : 그러나 확실히, 나는 그것을 시험해 보았습니다. 그리고 그것은 정말로 아무것도 변화시키지 않았습니다. –