2012-03-25 4 views
1

나는 정말로 변경할 수없는 매핑 파일에 대해 쿼리하는 기준 API를 사용하고 있습니다. 많은 자식 기관과 루트 개체가 결합 특정 쿼리를 조인으로 인해 여러 SQL 결과 라인이있는 경우 중복 된 개체를 받고 피하기 위해NHibernate : 결과 트랜스 포머 결합?

criteria.SetResultTransformer(CriteriaSpecification.DistinctRootEntity); 

를 추가하는 우리를 요구했다있다.

criteria.SetResultTransformer(Transformers.AliasToBean(typeof(MyDto))); 

큰이 작품 중 하나를 사용 : 문제는 지금은 또한과 같이, 별칭 - 투 - 콩 변압기를 적용 할 것입니다. 그러나 필자는 이들을 결합해야합니다. 필요한 열만 DTO 객체에로드하고 고유 한 루트 엔티티 만 가져 오려고합니다. 어떻게해야합니까?

답변

5

ICriteria criteria = session.CreateCriteria(typeof(YourEntity)); 
criteria.SetProjection(
Projections.Distinct(Projections.ProjectionList() 
    .Add(Projections.Alias(Projections.Property("Property"), "Property"))); 

criteria.SetResultTransformer(
new NHibernate.Transform.AliasToBeanResultTransformer(typeof(MyDto))); 

IList list = criteria.List(); 
+0

예를 다음과 같이 DistinctEntityRootTransformer와 프로젝션을 사용할 수 있습니다 DTO으로 만 필요한 열을로드하려면! 고마워요! – joniba

+4

'DistinctEntityRootTransformer'가 보이지 않습니다 ... –