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 :

[Hibernate 3] Group by


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Par défaut [Hibernate 3] Group by
    Bonjour,
    Suite au passage d'Hibernate 2 vers Hibernate 3, quelques requêtes ne passent plus comme elles devraient.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select new com.bull.crnpc.analytique.Section(s.CodeSectionNiv3,s.LibelleSectionNiv3)" +
    					" from TeSections s" +
    					" where s.CodeSectionNiv4='" + refSection + "' order by s.LibelleSectionNiv3 asc" +
    					" group by s.CodeSectionNiv3";
    Cette requête (avec d'autres du même type) renseigne des listes sélectionnables pour l'utilisateur.

    Le hic est qu'il n'effectue pas le group by. Je n'ai aucune erreur, aucun log spécifique. Juste de multiples occurences identiques à cause de la non-exécution du group by.

    Cela fonctionnait sans problème auparavant.
    Une idée ?
    Merci d'avance

  2. #2
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    HUmmm pourrais tu montrer comment est executer ta requete?

    Peux-tu encore tester avec HIbernate 2 que ca marche ou bien le 3 est mis et tu ne peux plus tester en 2?

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Par défaut
    Ouaip !
    La méthode appelée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
        public List selectSousSections(String refSection)
    	{
    		List sections = null;
    		int niveau = refSection.length();
    		String requete = "";
    		if (niveau==1){
    			requete = "select new com.bull.crnpc.analytique.Section(s.CodeSectionNiv3,s.LibelleSectionNiv3)" +
    					" from TeSections s" +
    					" where s.CodeSectionNiv4='" + refSection + "' order by s.LibelleSectionNiv3 asc" +
    					" group by s.CodeSectionNiv3";
     
    		}
    		else if (niveau==2){
    			requete = "select new com.bull.crnpc.analytique.Section(s.CodeSectionNiv2,s.LibelleSectionNiv2)" +
    			" from TeSections s" +
    			" where s.CodeSectionNiv3='" + refSection + "' order by s.LibelleSectionNiv2 asc" +
    					" group by s.CodeSectionNiv2";
     
    		}
    		else if (niveau==3){
    			requete = "select new com.bull.crnpc.analytique.Section(s.CodeSectionNiv1,s.LibelleSectionNiv1)" +
    			" from TeSections s" +
    			" where s.CodeSectionNiv2='" + refSection + "' order by s.LibelleSectionNiv1 asc" +
    					" group by s.CodeSectionNiv1";
     
    		}
    		else if (niveau==4)
    		{
    			requete = "select new com.bull.crnpc.analytique.Section(s.CodeSection,s.LibelleSection)" +
    			" from TeSections s" +
    			" where s.CodeSectionNiv1='" + refSection + "' order by s.LibelleSection asc";
     
    		}
    		try {
    	        com.bull.crnpc.hibernate.dao._RootDAO.initialize();
    		    sections = find(requete);
    		}
    		catch (HibernateException e) {
    				//TODO logger
    		}
    		return sections;
    	}
    Les 2 méthodes find qui exécutent la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    	/**
             * Execute a query. 
             * @param query a query expressed in Hibernate's query language
             * @return a distinct list of instances (or arrays of instances)
             */
    	public java.util.List find(String query) throws HibernateException {
    		Session s = null;
    		try {
    			s = getSession();
    			return find(query, s);
    		} finally {
    			closeSession();
    		}
    	}
     
    	/**
             * Perform a find but use the session given instead of creating a new one.
             * @param query a query expressed in Hibernate's query language
             * @s the Session to use
             */
    	public java.util.List find(String query, Session s) throws HibernateException {
    		logger.debug("\tfind: query="+query);
    		List result = new ArrayList();
     
    		Query q = s.createQuery(query);
    		logger.debug("\tfind: query créée");
    		Iterator it = q.iterate();
    		while (it.hasNext()) {
    			result.add(it.next());
    		}
    		logger.debug("\tfind: liste retour créée");
    		return result;
    	}
    Voilà !

    C'est certain, ça fonctionne avec Hibernate 2. Le changement de résultat ne s'est fait qu'après la migration.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Le order by ne doit il pas venir apres le group by ?

  5. #5
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Par défaut
    En effet, c'est la cause de l'erreur.

    Merci

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

Discussions similaires

  1. [hibernate] requete avec des group by
    Par xavier_ dans le forum Hibernate
    Réponses: 1
    Dernier message: 17/11/2008, 10h18
  2. Traiter un groupe de requêtes avec Hibernate
    Par barouz dans le forum Hibernate
    Réponses: 1
    Dernier message: 20/04/2007, 16h11
  3. Hibernate : pb group by
    Par clairette dans le forum Hibernate
    Réponses: 8
    Dernier message: 04/07/2006, 16h15
  4. gestion des groupes
    Par muaddib dans le forum QuickReport
    Réponses: 3
    Dernier message: 31/12/2002, 11h01

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