2009-06-26 25 views
1

連接表的我有這個疑問:別名在SQLProjection

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}不起作用。現在我結束了對SQL字符串中的別名的硬編碼,但這看起來並不穩固。

如果我正確理解文檔,這應該是可能的。我使用NH2.0.1。

/導演Asger

回答

1

不是直接回答你的問題,而是: 你爲什麼不單獨查詢三個值,做串聯在你的代碼,而不是使用數據庫的?

回答你的問題:在Hibernate v3(java,抱歉)Projection界面上有a getColumnAlias方法。我無法在NHibernate中找到它的對手。

乾杯

+0

嗨馬爾滕,非常感謝你的回覆。 getColumnAlias正是我正在尋找的......但正如你所說,它似乎並不存在於NH中。 但至於你的建議,你是非常正確的,我從我的代碼的其他部分抓住查詢部分,在那裏我將使用投影值上的HAVING子句,所以它有道理 - 但在這情況並非如此。感謝您指出了這一點! – asgerhallas 2009-07-03 07:20:53

1

您可以使用{}別名 - 這將引用當前投影的別名。