Est-il possible de naviguer à travers les associations clé-un-un d'un composite-id dans Nhibernate?La navigation dans la clé-plusieurs-à-un de composite-id est-elle possible?
J'ai quelques tables que je mis en correspondance avec les paramètres suivants (héritage):
<class name="StructureUser">
<composite-id>
<key-many-to-one name="Structure" class="Structure" column="STRUKTUR_ID" />
<key-many-to-one name="User" class="User" column="USERID" />
</composite-id>
...
</class>
<class name="Structure">
<id name="Id" column="id" type="Int32" >
<generator class="native"/>
</id>
<property name="Low" column="low" type="Int32" />
...
</class>
Je veux accéder à la propriété « faible » de la structure par la classe StructureUser dans une requête. J'ai essayé chaque utilisation de l'API Criteria à laquelle je pouvais penser mais toujours une erreur. Voici deux des questions que j'ai essayé:
ICriteria crit1 = Session.CreateCriteria(typeof(StructureUser))
.CreateAlias("Structure", "struc")
.Add(Restrictions.Le("struc.Low", 123));
ICriteria crit2 = Session.CreateCriteria(typeof(StructureUser))
.Add(Restrictions.Le("Structure.Low", 123));
L'erreur dans crit1 provient de la base de données et dit que « struc_1.Low est pas valable dans ce contexte », parce que NHibernate ne génère pas la jointure nécessaire pour la restriction dans la commande sql. L'erreur dans crit2 provient de NHibernate, m'indiquant qu'elle ne peut pas accéder à la propriété "Structure.Low" sur StructureUser. J'ai contourné ce problème en déclarant l'ID composite avec des éléments de propriété clé et en déclarant les relations avec des éléments many-to-one normaux.
Existe-t-il une autre solution à ce problème?
Je suis en cours d'exécution dans un problème similaire. –