2009-07-17 9 views
0

J'ai une relation (plusieurs en fait) entre deux objets, l'objet parent est un utilisateur et l'objet enfant est un incident. Il y a quatre relations définies entre utilisateur et Incident:NHibernate, comment interroger un objet parent avec de multiples relations

  1. propriété utilisateur _ créé de Incident fait référence à un utilisateur qui a créé le Incident
  2. propriété utilisateur _ modifié qui a modifié le Incident
  3. utilisateur _ rapporté et enfin
  4. utilisateur _ responsable

Toutes ces quatre propriétés de Incident fait référence à un utilisateur objet. Comme cela dans la mise en correspondance:

<many-to-one name="User_created" class="User, WebbData" fetch="select"> 
    <column name="created_by" not-null="true" /> 
</many-to-one> 
<many-to-one name="User_modified" class="User, WebbData" fetch="select"> 
     <column name="modified_by" not-null="false" /> 
</many-to-one> 
<many-to-one name="User_reported" class="User, WebbData" fetch="select"> 
     <column name="reported_by" not-null="true" /> 
</many-to-one> 
<many-to-one name="User_responsible" class="User, WebbData" fetch="select"> 
    <column name="responsible" not-null="false" /> 
</many-to-one> 

Je veux écrire une expression NHibernate chercher tous les incidents créés par un utilisateur spécifique, mais je ne sais pas comment écrire cette expression ... Voilà ce que je me suis tellement loin:

return session.CreateCriteria(typeof(Incident)) 
    .CreateCriteria("User") 
     .Add(Expression.Eq("Id", UserID)) 
    .List<Incident>(); 

mais comment diable vais-je dire NHibernate qu'il doit utiliser l'utilisateur créé _ relation et non l'un des trois autres?

Répondre

0

Je pense que cela fonctionne, avec l'affectation directe de l'ID d'une propriété d'entité:

return session.CreateCriteria(typeof(Incident)) 
    .Add(Expression.Eq("User_created", UserID)) 
    .List<Incident>(); 
+0

ça marche! si facile que je me sens presque gêné je n'ai pas pensé moi-même ...: S merci beaucoup! – RickardN

+0

De rien. J'ai toujours l'impression de tricher en assimilant une entité à une valeur d'ID comme celle-ci, mais de toute évidence c'est totalement valable ... –

Questions connexes