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子句来处理投影值,因此它是有意义的,但是在这种情况下它没有意义。谢谢你指出这一点!