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。