2009-11-19 6 views
2

Est-il possible de filtrer sur une sous-classe jointe particulière dans NHibernate?Sous-classe spécifique de recherche NHibernate

Par exemple, j'ai les classes suivantes:

Pet { Name } 
Cat: Pet { Paws } 
Budgie: Pet { Wings } 
Person { Pets } 

Je veux créer une recherche NHibernate pour me donner les personnes avec des chats avec 4 pattes.

Je ne peux pas sembler être en mesure de limiter sur les attributs d'animaux (Nom) ...

Répondre

0

Vous devriez essayer quelque chose comme ça. Je ne l'ai pas testé, donc je ne suis pas sûr à 100%.

DetachedCriteria fetchCatsWith4Pawns = DetachedCriteria.For<Cat>(); 
fetchCatsWith4Pawns.Add(Restrictions.Eq("Pawns", 4)); 
fetchCatsWith4Pawns.SetProjection(Projections.Id()); 

DetachedCriteria fetchPersonsWithCatsWith4Pawns = DetachedCriteria.For<Person>(); 
fetchPersonsWithCatsWith4Pawns.CreateCriteria("Pets", "pet").Add(Subqueries.PropertyIn("pet.id", fetchCatsWith4Pawns)); 
fetchPersonsWithCatsWith4Pawns.GetExecutableCriteria(session).List<Person>(); 
+0

Merci! Vous avez raison :) – Kram

Questions connexes