好吧,我认为您需要将来的查询和 DistinctRootEntityResultTransformer
我可以向您展示我如何使用 Criteria 进行操作,并建议您也这样做。在我们的项目中,一切都是 LINQ,但这个必须是丑陋的并且带有魔法字符串。这是具有许多成员和许多子组的组对象。执行查询后,我得到了根(根是父元素为空的元素),其中包含 LOADED 对象。对于您的情况,您应该通过 CommendId 添加限制此外,每次获取都必须在单独的未来查询中完成。祝你好运
public static GroupDto GetGroupHierarchy(this ISession session)
{
session
.CreateCriteria<GroupDto>()
.Add(Expression.Eq("IsActive", true))
.SetFetchMode("Subgroups", NHibernate.FetchMode.Eager)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.Future<GroupDto>();
var groups = session
.CreateCriteria<GroupDto>()
.Add(Expression.Eq("IsActive", true))
.SetFetchMode("Members", FetchMode.Eager)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.Future<GroupDto>();
return groups.Single(g => g.Parent == null);
}