在进行这样的查询时(使用Nhibernate 2.1.2):
ICriteria criteria = session.CreateCriteria<MyRootType>()
.SetFetchMode("ChildCollection1", FetchMode.Eager)
.SetFetchMode("ChildCollection2", FetchMode.Eager)
.Add(Restrictions.IdEq(id));
Run Code Online (Sandbox Code Playgroud)
我以一些笛卡尔式的方式获得了多个重复的对象.例如,如果ChildCollection1有3个元素,并且ChildColection2有2个元素,那么我得到结果,每个元素在ChildColection1一个重复,并且每个元素都是ChildColection2三重的!这对我而言是一个WTF时刻......
那么如何正确地做到这一点?
更新:
根据Felice的建议,我尝试使用DistinctRootEntity转换器,但这仍然是返回重复项.码:
ICriteria criteria = session.CreateCriteria<MyRootType>()
.SetFetchMode("ChildCollection1", FetchMode.Eager)
.SetFetchMode("ChildCollection2", FetchMode.Eager)
.Add(Restrictions.IdEq(id));
criteria.SetResultTransformer(Transformers.DistinctRootEntity);
return criteria.UniqueResult<MyRootType>();
Run Code Online (Sandbox Code Playgroud)
Fel*_*ano 15
您可以通过指定选择单个不同的结果 SetResultsTransformer(Transformers.DistinctRootEntity);
| 归档时间: |
|
| 查看次数: |
5283 次 |
| 最近记录: |