2010-08-11 26 views
1

表別名我有以下代碼:NHibernate的:中SqlProjection

Session.CreateCriteria<Foo>("foo") 
    .CreateAlias("foo.Bar", "bar") 
    .SetProjections(Projections.SqlProjection("bar.FirstName + ' ' + bar.LastName)); 

的問題是與別名在SqlProjection酒吧表。

Hibernate文檔說「字符串{別名}將被替換爲根實體的別名」,但沒有給出任何提示如何訪問非根實體的別名。

這可能嗎?

回答

0

試試這個:

Session.CreateCriteria<Foo>() 
    .CreateCriteria("Bar") 
     .SetProjections(Projections.SqlProjection("FirstName + ' ' + LastName)"); 
1

我也有類似的問題。具體來說,我想創建一個由多個字段串聯而成的投影。代替使用SqlProjection的,我使用:

Projections.SqlFunction("concat", 
         NHibernateUtil.String, 
         Projections.Property("Field"), 
         Projections.Constant(" "), 
         Projections.Property("Field2", 
         Projections.Constant(" "), 
         Projections.Property("Field3") 
        ); 

這是基於一個NHibernate的單元測試:UsingSqlFunctions_Concat_WithCast。儘管「concat」不是本地函數,但它適用於SQL Server。