IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Probleme avec count(*)


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Homme Profil pro
    responsable technique
    Inscrit en
    Novembre 2002
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : responsable technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 100
    Par défaut Probleme avec count(*)
    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 ?

  2. #2
    Membre expérimenté Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(do) from com.xxx.myClass do

  3. #3
    Membre confirmé
    Homme Profil pro
    responsable technique
    Inscrit en
    Novembre 2002
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : responsable technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 100
    Par défaut
    ca ne change rien, que ce soit avec count(*) ou cont(do), Hibernate n'effectue que les jointures dont il a besoin pour les clauses where mais pas les jointures nécessaires pour ramener les clauses SELECT de la premiere requete

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Et si tu essayes :
    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] ) unNom
    ?

    Sinon une autre idée peut être de regarder quelle jointure il manque. Peut être que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     select count(do.autorisation.info.titulaire.nom)
         from fr.mi.map.dossier.persistence.DossierBean do
         where [ici les criteres de selection]
    suffirait à faire toutes les bonnes jointures ...

  5. #5
    Membre confirmé
    Homme Profil pro
    responsable technique
    Inscrit en
    Novembre 2002
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : responsable technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 100
    Par défaut
    je ferme car ça date d'il y a 2 ans et je me rappelle que le problème venait des clauses where de mes requêtes...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/03/2013, 09h53
  2. [AC-2007] Probleme avec Count Distinct
    Par Bonero dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 18/10/2012, 11h37
  3. Probleme avec Count et In
    Par Overstone dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/06/2010, 09h44
  4. [CR?]Probleme avec "Count"
    Par dilalex dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 10/03/2008, 10h09
  5. Probleme avec COUNT() contenant une condition
    Par smarties dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/07/2007, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo