2009-05-15 8 views
0

Étant donné un X racine globale, qui a beaucoup Y et Y qui a beaucoup Z ...NHibernate - forage vers le bas de la racine agrégat

Comment puis-je percer à travers les associations et ne sélectionner que les années X dont Z de avoir une certaine valeur de propriété?

IList Xs = session.createCriteria (typeof (X)) .CreateAlias ​​("Ys", "Y") (" .CreateAlias ​​Y.Zs", "Z") .Add (Expression.Eq ("Z.Property", 1)) .List();

Cela entraîne une exception PropertyAccessException, et je ne sais pas pourquoi.

Charger tous les X et tester leurs propriétés Z serait massivement redondant.

+0

Cela peut être utile si vous spécifiez des mappages et des noms réels et le fichier de mappage XML, au moins la section qui concerne X, Y et Z. –

Répondre

1

Je l'ai essayé, et dans ma configuration de test, il fonctionne parfaitement. Une PropertyAccessExceotion peut concerner un setter non disponible ou une incompatibilité de type lorsqu'une propriété est définie. Si vous publiez du mapping et du code de source d'entité, cela pourrait vous aider.