2010-04-28 3 views
0

자식 컬렉션에 특정 유형의 항목이 포함되지 않은 부모 목록을 가져 오려고합니다. 뭔가 것처럼 LINQ와 동등한은 다음과 같습니다 개체 모델은 부모> 아이 (항목)> 유형> 코드입니다자식 컬렉션에 특정 속성 값이있는 항목이없는 부모 찾기

dataset.Where(x => x.Items.FirstOrDefault(y => y.Type.Code == "ABC") == null) 

부모 내 집계 루트 인 경우, 어떻게 NHibernate에 기준/쿼리에서이 모델 것 ? 내 첫 시도는 다음과 같습니다.

var results = session.CreateCriteria<Parent>() 
    .CreateCriteria("Items") 
    .CreateCriteria("Type") 
    .Add(Restrictions.Not(Restrictions.Eq("Code", "ABC"))) 
    .SetResultTransformer(Transformers.DistinctRootEntity) 
    .List<Parent>(); 

이것은 올바른 엔티티를 반환하지 않는 것처럼 보입니다.

답변

0

이 기준보다 HQL이 작업을 수행하는 것이 더 쉽습니다 :

from Parent 
where id not in 
     (select p.Id 
     from Parent p 
     join p.Items item 
     where item.Type.Code = 'ABC') 

당신은 당신이 예상 결과를 얻고, DistinctRootEntity를 필요로하지 않고 있습니다.