2010-12-07 2 views
0

나는 6 개월 전에 비슷한 질문을 던졌지 만 아직 답변이 없거나 제안 사항이 없습니다.중복 제거에 대한 도움말

여기에 문제가 있습니다. 아래 코드는 중복 된 레코드를 반환합니다. 내가 작업하고있는 실제 반환 된 레코드 집합은 Model.Product입니다. 이 쿼리는 ProductSkus 테이블 내의 DateAdded 필드를보고 제품이 표시되는지 확인합니다. 유일한 문제는 하나 이상의 ProductSkus가 특정 제품에 대한 요구 사항과 일치 할 경우 중복 레코드를 얻는 것입니다. 나는 이것을 가질 수 없다. Model.Product에 포함 된 데이터에 액세스하는 데만 신경 씁니다. Model.Product.ProductSkus가 아닙니다.

비슷한 상황에 처한 사람이 있습니까? 내가 원하는 결과를 얻는 방법에 대한 아이디어가 있습니까?

미리 감사드립니다.

ICriteria query = this.Session.CreateCriteria<Model.Product>(); 
query.CreateAlias("ProductSkus", "ProdSku", JoinType.InnerJoin) 
    .AddOrder(new Order("ProdSku.DateAdded", false)) 
    .AddOrder(new Order("Name", true)) 
    .Add(Restrictions.Ge("ProdSku.DateAdded", myDate)) 
    .SetMaxResults(100); 

result = query.List();

답변

3

쿼리/조건에 '결과 변환기'가 사용되는지 확인해야합니다. 이 경우 DistinctRootEntityResultTransformer가 필요합니다.

query.SetResultTransformer(Transformers.DistinctRootEntity); 

다음으로 그 연관성은 어떻게 매핑됩니까? 가방으로 또는 세트로 매핑됩니까?

+0

가방으로 매핑됩니다. 당신의 제안이 효과가있었습니다. 너무 감사합니다. –