SQLProjection中连接表的别名

时间:2009-06-26 09:44:03

标签: nhibernate criteria

我有这个问题:

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别名,就像在SQL字符串中编写{estate}一样? {estate}不起作用。现在我最终在SQL字符串中硬编码别名,但这似乎不太稳固。

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

/导演Asger

2 个答案:

答案 0 :(得分:1)

不能直接回答您的问题,但是: 为什么不单独查询这三个值并在代码中进行连接而不是使用数据库呢?

回答你的问题:在Hibernate v3(java,抱歉)中,Projection界面上有a getColumnAlias方法。我无法在NHibernate中找到它的对应物。

干杯

答案 1 :(得分:1)

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