2010-09-26 5 views
2

j'ai entité problème cartographiée à l'aide beaucoup à plusieurs à l'entité Tag (problème a une liste de tags). Je veux charger tous les Problèmes, qui ont Tags spécifiques.
Par exemple:
problème1 (balise1)
Problem2 (balise1, tag2)
Problem3 (balise1, tag3)
Problem4 (tag3, TAG4)
Je veux les problèmes de filtre « balise1 , tag2 ". Le système retourne:
problème1 (balise1)
Problem2 (balise1, tag2)
Problem3 (balise1, tag3)
Je suis Puzzling sur ce problème depuis une semaine déjà. Avez-vous des idées?
P.S. Charger toute la liste et le filtrer en utilisant LINQ est la dernière variante possible ...NHibernate nombreux à plusieurs critères

Répondre

2

HQL est un meilleur ajustement pour ces requêtes que les critères.

Une solution possible:

session.CreateQuery(@"select distinct p 
         from Problem p 
         join p.Tags t 
         where t in (:tags)") 
     .SetParameterList("tags", listOfTags) 
+0

Puis-je utiliser la requête HQL et critères ensemble? Le problème est que j'ai besoin de pagination aussi (SetFirstResult() et SetMaxResult()). –

+0

HQL et les critères sont des méthodes différentes. Mais vous pouvez aussi utiliser SetFirstResult et SetMaxResult sur les requêtes HQL. –

Questions connexes