2010-10-13 84 views
1

NHibernate的實體訪問我有這個映射文件:通過投影

'class name="WebTools.Data.Common.IHObjekt, WebTools.Data" table="IHObjekt"' 
    .... 
'property name="TYPBEZEICH" type="string"' 
... 
'many-to-one name="standort" column="STANDORT_ID" fetch="join"' 

而且我想用一個「Projections.ProjectionList()」,以減少從查詢返回的列數。

我這樣做:

'ICriteria criteria = Session.CreateCriteria(typeof(Data.Common.IHObjekt));' 
'ProjectionList projectionList = Projections.ProjectionList();' 
.. 
'projectionList.Add(Projections.Property("standort.CODE"));' 

而且收到此錯誤:

NHibernate.QueryException:無法解析屬性:standort.CODE的:WebTools.Data.Common.IHObjekt

我我試圖訪問一個子實體,但它似乎只能訪問我的父類中的值。像:

'projectionList.Add(Projections.Property("TYPBEZEICH"));' 

任何人都可以提供一些代碼,讓我使用投影來訪問子類中的實體嗎?

回答

1

您需要創建一個別名才能引用子實體的屬性。

ICriteria criteria = Session.CreateCriteria(typeof(Data.Common.IHObjekt)); 

criteria.CreateAlias("standort", "s", JoinType.InnerJoin); 

ProjectionList projectionList = Projections.ProjectionList(); 
projectionList.Add(Projections.Property("s.CODE"));