2009-12-04 77 views
0

說我創建一個條件查詢並使用AliasToBean結果轉換器對其進行轉換。NHibernate:是否可以添加基於別名的限制

session.CreateCriteria<Staff>("s") 
    .CreateAlias("supervisor", "super") 
    .SetProjection(Projections.ProjectionList() 
    .Add(Projections.Property("s.name"), "name") 
    .Add(Projections.Property("super.name"), "supervisor_name")) 
    .SetResultTransformer(Transformers.AliasToBean<StaffView>()); 

當您只知道bean的屬性名稱時是否可以添加限制?您可以使用bean屬性名稱添加AddOrder,但限制僅顯示爲與實際屬性名稱一起使用。我猜這是因爲它們是在轉換之前應用的,就像你不在where子句中使用列別名一樣,但你可以按順序。

//throws exception like cannot find property supervisor_name in Staff class 
//only "super.name" works 
.Add(Restrictions.Like("supervisor_name", "blah")) 

//this works though 
.AddOrder(Order.Asc("supervisor_name")) 

所以基本上我需要一種方法來獲取基於別名的別名屬性名稱。我可以想到多種方法來做到這一點,但我希望NHibernate有一些現有的方法?例如,我可以將屬性的單獨映射保留爲別名或映射到數據庫視圖,因此不需要轉換爲bean。

回答

0

它應該與名稱的別名點屬性名稱。 {別名} .Name。

還是我誤解你的問題?

相關問題