2

假设我们有这个实体结构:

Document
- DocumentA
- DocumentB

在基类 Document 中,我们有字段IdNameCreateDate。在加入的子类 DocumentA 中,我们有字段BookPages。在 DocumentB 中,我们有MagazinePages

所以问题是当我尝试使用标准获取记录时:

var prj = Projections.ProjectionList();
foreach (var col in selectColumns)
{
    prj.Add(Projections.Property(col), col);
}
criteria.SetProjection(prj).SetResultTransformer(new AliasToBeanResultTransformer(entityType));

因此,如果我们在selectColumns中有两个Pages列,NHibernate 只会从第一个中选择数据。事实上,它甚至会生成这样的 SQL 查询

SELECT top 15 
this_1_.Pages as y0_
, this_1_.Pages as y1_
, this_.CreationDate as y2_
, this_.CreationAuthor as y3_
, this_.Name as y4_
, this_.Id as y5_
FROM Document this_ 
left outer join DocumentA this_1_ on this_.Id=this_1_.Id 
left outer join DocumentB this_2_ on this_.Id=this_2_.Id 

有谁知道如何使用 Criteria 解决我的问题?顺便说一句,我没有选择更改此结构的选项,在此系统中,用户可以定义自己的类和嵌套类。

4

0 回答 0