1

我有这个查询:

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"))

有没有一种方法可以获取“estate”的 SQL 别名,例如在 SQL 字符串中写入 {estate}?{房地产} 不起作用。现在我最终在 SQL 字符串中对别名进行了硬编码,但这似乎不太可靠。

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

/阿斯格

4

2 回答 2

1

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

回答您的问题:在 Hibernate v3(java,抱歉)中 Projection 接口上有一个 getColumnAlias方法。我无法在 NHibernate 中找到它的对应物。

干杯

于 2009-07-02T18:08:29.867 回答
1

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

于 2012-05-01T14:46:07.023 回答