在我的查询中,我使用多个表,其中一些表无法设置为正常的 nhibernate 关系,因此我被迫返回由各个列而不是实体实例组成的行。我想要返回的属性之一是包/列表,我的查询如下所示:
从父级 p、OtherClass o、... 中选择 p.ID、p.SomeOtherField、elements(p.MappedBagField)、o.AnotherField ...
查询有效,但我遇到的问题是,当包包含多个链接记录时,我会返回多行。有什么简单的方法可以阻止这种情况发生吗?我尝试了不同的 p.ID,但没有任何区别
[编辑]Criteria API 是否更适合这个?[/编辑]
最佳答案
看起来您只是想获取包含已加载集合的父项列表,以及来自其他实体的一些数据,这是正确的吗?
在这种情况下:
var parents = session.CreateQuery(@"
select p, o
from Parent p, OtherClass o
join fetch p.MappedBagField
...")
.SetResultTransformer(Transformers.DistinctRootEntity)
.List<object[]>();
结果的每一项都有两个元素,[0]是Parent,[1]是OtherClass。
关于nhibernate - 返回 Bag 属性时 HQL 查询中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5107818/