NHibernate使用条件多个连接的子类和重复的列名

时间:2012-01-26 21:58:45

标签: nhibernate criteria nhibernate-criteria joined-subclass

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

Document
- DocumentA
- DocumentB

在基类文档中,我们有字段 ID 名称 CreateDate 。在连接的子类DocumentA中,我们有字段 Book Pages 。在DocumentB中,我们有杂志页面

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

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

因此,如果我们在 selectColumns 中有两个页面列,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解决我的问题? BTW我没有选择更改这个结构,在这个系统中用户可以定义自己的类和嵌套类。

0 个答案:

没有答案