2010-10-13 21 views
1

J'ai ce fichier de mapping:NHibernate accès Entité par projection

'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"' 

Et je voudrais utiliser un « Projections.ProjectionList() » pour réduire le nombre de colonnes renvoyées par la requête.

Je fais ceci:

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

Et cette erreur:

NHibernate.QueryException: ne pouvait pas résoudre la propriété: standort.CODE de: WebTools.Data.Common.IHObjekt

I Je tente d'accéder à une entité enfant, mais il semble que je ne peux accéder aux valeurs de ma classe parente. Comme:

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

Quelqu'un peut-il fournir un code qui me permettra d'utiliser la projection pour accéder à une entité dans une classe enfant?

Répondre

1

Vous devez créer un alias afin de référencer les propriétés de l'entité enfant.

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

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

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