Bonjour,
Dans mon application, j'ai une fonctionnalité de recherche de dossiers. J'effectue la recherche en exécutant une requête HQL qui ressemble à ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
select do.id, do.autorisation.type,
do.autorisation.info.titulaire.nom, 
do.autorisation.info.numeroInfo, 
do.autorisation.info.titre.numeroTitre, 
do.situation.carac.numeroIdent, 
do.situation.carac.marque, ...
from fr.mi.map.dossier.persistence.DossierBean do
where [ici les criteres de selection]
Ma requête me ramene bien ce que j'attends.
Mais je dois gérer la pagination au niveau de mes pages JSP. J'utilise donc les methodes setFirstResult et setMaxResult de l'objet Query pour avoir plusieurs pages si le nb de resultats est trop grand. mais pour gérer la pagination, je dois aussi connaitre ne nb total d'enregistrements de ma recherche. j'execute donc une autre requête, comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
select count(*) from fr.mi.map.dossier.persistence.DossierBean do
where [les memes criteres que dans la premiere requete]
Le probleme est que la requete HQL avec le select count(*) ne ramene pas le nb qu'il faut : en effet, la requete SQL générée par Hibernate n'est pas la même dans les 2 cas.
Dans le premier cas, la requête générée est bonne, mais dans le 2eme cas (avec le count), il manque des jointures, j'ai l'impression que comme les éléments ramenés par la clause select ne sont pas les mêmes, il ne fait que les jointures dont il a besoin pour les clauses where

Qq'un a-t-il une idée pour contourner ce problème ?

J'ai bien essayé ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
select count(*) from (
     select do.id, do.autorisation.type,
     do.autorisation.info.titulaire.nom, 
     do.autorisation.info.numeroInfo, 
     do.autorisation.info.titre.numeroTitre, 
     do.situation.carac.numeroIdent, 
     do.situation.carac.marque, ...
     from fr.mi.map.dossier.persistence.DossierBean do
     where [ici les criteres de selection] )
mais j'ai une QueryException : unexpected token; il n'a pas l'air d'aimer le count imbriqué avec l'autre requete

QQ'un peut-il m'aider svp ?