Hibernate requête de filtrage des collections
Je voudrais vous demander si il est possible de faire cela en utilisant hibernate.
Disons que j'ai déjà un HQL et extraites d'une collection. Est-il possible de filtrer en utilisant hibernate?
J'ai essayé d'utiliser le <filter>
à l'en-tête de la classe et ajouter une session.enable() avant la requête, mais il semble qu'il ne fonctionne pas.
Exemple de code
Query search = session.getNamedQuery(HQL_SOMEDEFAULTQUERY);
List results = search.list();
//further filtering ...
Dépouillé HQL
select h
from flow as f
join f.item as i
join i.header as h
where i.status = :status
and f.staff = :staff
order by i.prId desc
Vous devez vous connecter pour publier un commentaire.
Pas. Au moins, pas de la façon que vous avez demandé. Une fois que vous demandez d'Hibernation pour frapper la base de données (avec la
list()
méthode), Hibernate a fait sa part, et les résultats sont maintenant dans vos mains. Vous pouvez mettre en œuvre une logique de filtrage dans votre code pour post-traiter les résultats.Cela dit, il est possible de filtrer les résultats dans la requête elle-même. Si vous définissez un filtre Hibernate et de l'activer pour un modèle spécifique/de requête, vous seriez en mesure de conserver l'original de votre requête HQL et Hibernate va ajouter avec extra
where
clauses pour filtrer les résultats. Voir ceci:http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/filters.html
La meilleure façon serait d'utiliser Critères. Voici un exemple de Hibernate Documentation qui explique l'utilisation de Critères.
Critères seraient utilisés avant d'appeler la méthode de la liste.
Espère que ça aide.