Bonjour,
ja voudrais savoir s'il hibernate donnait la possibilité de filtrer le resultat d'une requete à l'aide d'une methode java; je m'explique :
je travaille actuellement sur une application qui construit une requete dynamique en hql, puis l'execute et renvoie une liste de resultats. j'utilise egalement les possibilités de pagination de hibernate (maxResult, firstResult) et calcule le nombre total de pages à l'aide d'un count(*).
Cependant, je dois dorenavant gerer la securite liée à cette recherche, en excluant certains resultats retournés. Le problème est que la fonction qui m'est fournie pour gerer la validité de mes resultats (supposons qu'ils soient des instances de la classe MyBean) est de la forme
Code :
- boolean isBeanAuthorized(MyBean var);
|
Si je fais le filtrage à posteriori, ma pagination tombe à l'eau (sur une requete retournant 40 resultats, il se peut que j'en garde 12, 22, 40 voire 0 ce qui m'oblige à faire plusieurs requetes pour gerer ma page et surtout qui rend impossible le calcul du nombre total de pages, car rapatrier tous les enregistrements de la table et les filtrer un par un pour savoir combien sont valides n'est pas viable au vu de la taille de la table).
Bref, il faut que j'effectue mon filtrage au moment de la requete. Or les contraintes qui me sont imposées (en particulier le fait que je ne sache rien de la methode de validation des données si ce n'est sa signature) font que je ne vois pas comment m'en sortir. Hibernate donne la possibilité d'effectuer des filtres mais de ce que j'en ai vu, ça reste assez limité (et ça ne convient pas pour que que je veux faire)
Bref, si quelqu'un a une solution (ou une piste) qui me permettrait de fire mon filtre tout en gardant la pagination et notamment en pouvant calculer le nombre de pages retournés par la requete, je suis preneur.
Merci
(j'utilise hibernate 3.0, une base oracle 9i et un jdk 1.4.3)
---------------
.