【问题标题】:Alias of joined table in SQLProjectionSQLProjection中连接表的别名
【发布时间】:2009-06-26 09:44:03
【问题描述】:

我有这个问题:

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。

/阿斯格

【问题讨论】:

    标签: nhibernate criteria


    【解决方案1】:

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

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

    干杯

    【讨论】:

    • 您好 Maarten,非常感谢您的回复。 getColumnAlias 正是我正在寻找的......但正如你所说,它似乎在 NH 中不存在。但是至于你的建议,你是对的,我从我的代码的其他部分中获取了查询部分,我将在其中对投影值使用 HAVING 子句,所以它是有道理的 - 但在这种情况下它没有。感谢您指出这一点!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-25
      • 2011-12-10
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多