我有这些标准,这些标准非常有效,除了我在集合中获得多个相同的实体。我知道这是设计的,我知道你应该能够使用ResultTransformer
来避免它,或者在查询后通过散列集过滤。
我的查询如下:
IMultiCriteria criteria =
session.CreateMultiCriteria()
.Add(DetachedCriteria.For<Building>()
.Add(Restrictions.Eq("Id", BuildingId))
.CreateCriteria("Windows", JoinType.LeftOuterJoin)
.SetFetchMode("Shadows", FetchMode.Eager))
.Add(DetachedCriteria.For<Building>()
.Add(Restrictions.Eq("Id", BuildingId))
.CreateCriteria("BuildingParts", JoinType.LeftOuterJoin)
.CreateCriteria("Windows", JoinType.LeftOuterJoin))
HashedSet
过滤解决方案对我来说是不可能的,因为我无法将集合设置回实体 - 他们有私有的setter。
我已尝试ResultTransformer
与DistinctRootEntityResultTransformer
,但我无法让它发挥作用。它不断返回集合BuildingParts
和Windows
中的多个相同实体。
有什么建议吗?或者如何让ResultTransformer
工作?