Nhibernate SQLProjection中联接表的别名

Nhibernate SQLProjection中联接表的别名,nhibernate,criteria,Nhibernate,Criteria,我有一个疑问: criteria = session.CreateCriteria(typeof (Building)) .CreateAlias("Estate", "estate") .SetProjection(Projections.ProjectionList() .Add(Property.ForName("Name"), "BuildingName") .Add(Proper

我有一个疑问:

criteria = session.CreateCriteria(typeof (Building))
    .CreateAlias("Estate", "estate")
    .SetProjection(Projections.ProjectionList()
                       .Add(Property.ForName("Name"), "BuildingName")
                       .Add(Property.ForName("estate.Name"), "EstateName")
                       .Add(Projections.SqlProjection(
                                "(estate1_.BBRMunicipalityNumber + '-' + estate1_.BBREstateNumber + '-' + {alias}.BBRBuildingNumber)" + " as BBRNumber",
                                new[] { "BBRNumber" },
                                new[] { NHibernateUtil.String }),
                            "BBRNumber"))
有没有一种方法可以像在SQL字符串中写入{estate}一样获取“estate”的SQL别名?{estate}不起作用。现在,我在SQL字符串中硬编码别名,但这似乎不是很可靠

如果我正确理解文档,这应该是可能的。我使用的是NH2.0.1


/Asger不是对您问题的直接回答,而是: 为什么不分别查询这三个值,并在代码中进行连接,而不是使用数据库进行连接

回答您的问题:在HibernateV3(java,抱歉)中,投影接口上有一个方法。我在NHibernate找不到它的对应物


干杯

您可以使用{alias}-它将引用当前投影的别名。

您好,Maarten,非常感谢您的回复。getColumnAlias正是我要找的。。。但正如你所说,它似乎不存在于NH。但是对于你的建议,你是非常正确的,我从我的代码的其他部分获取了查询部分,在这里我将使用一个HAVING子句来处理投影值,因此它是有意义的,但是在这种情况下它没有意义。谢谢你指出这一点!