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 :

sum dans la clause select


Sujet :

Hibernate Java

  1. #1
    Membre très actif Avatar de yacine.dev
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut sum dans la clause select
    Bonjour,en HQL,je voudrais sélectionner les commandes avec leur nombre d'articles y commandées .un peu prés comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List commandes=session.createQuery("select commande,count(commande.article) from Commande commande").
    list();
    c'est juste ?comment exploiter le resultat ? et comment récupérer le count.

    merci d'avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List commandes=session.createQuery("select commande,count(commande.article) from Commande commande").
    Voila comment tu pourrais la modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<Object[]> commandes=session.createQuery("select commande,count(commande.article) as nb from Commande commande group by commande.id").
    Dans ton iteration de recuperation tu castes les champs aux positions 1 et 2.

  3. #3
    Membre très actif Avatar de yacine.dev
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dans ton iteration de recuperation tu castes les champs aux positions 1 et 2.
    j'ai esseyé mais dans le cast il me envoie une erreur :Ljava.lang.Object; cannot be cast commande
    comment faire pour récuperer le resultat ? tu peu me donner un exemple?

    merci

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    A quel moment plante til ? au moment de la recuperation ou de la requete en elle meme? si c'est au moment de la recuperation , alors peux tu me montrer ton code de recuperation ?

  5. #5
    Membre très actif Avatar de yacine.dev
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut
    Bonjour, voila le code de la récupération :
    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
    
      List<Dondassociation> listdon=new ArrayList<Dondassociation>();
      Dondassociation don=new Dondassociation();  
    
       List<Object> dons=query.list();
    
       Iterator<Object>it=dons.iterator();
    
       while (it.hasNext()) {
        	//if pour  diférencier entre les objets Donassociation et leur sum (nombre de produit)
        	if(i%2==0){
        		don=(Dondassociation) it.next();//erreur de casting:Ljava.lang.Object; cannot be cast to Dondassociation
        		
        	}
        	else{
                 //j'enregistre le nombre de produit dans l'objet précédente
        		don.setNombreProdui( (Integer) it.next());
    		    listdon.add(don);
        		
        	}
    		i++;
    	}
    merci

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Si c'est la requete que tu nous as montrée ci dessus, c'est pas le resultat attendu là, tu recuperes le resultat je suppose?

  7. #7
    Membre très actif Avatar de yacine.dev
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut récupérer le resultat de select objet,sum(property)
    Bonjour,merci Devservlet pour ton aide.
    ça marche pour moi, voila comment récuperer le resultat d'une requête hql contenant une fonction d'adgregation par exemple sum :

    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
    
    Query query=session.createQuery("select dondassociation,sum(quantiter) from.........group by ");
    List<Object> dons=query.list();
        Iterator<Object>it=dons.iterator();
        int i=0;
      List<Dondassociation> listdon=new ArrayList<Dondassociation>();
      Dondassociation don=new Dondassociation();  
      while (it.hasNext()) {
    
          Object obj[]=(Object []) it.next();
    	  for (int j = 0; j < obj.length; j++) {
    		  
    		  if(j%2==0){//pour j==0 
    //la premiere position contient les objets donassociation 
    			   don=(Dondassociation) obj[j];
    	    	}
    	    	else{
    //la deuxiéme position contient le resultat de la fonction sum
    	    		Long nombreProdui=(Long)obj[j]);
    			
    	    	    }
    // NB:les tableau retourné conserve le tri des collones dans la clause select select a,b,sum(c) donc tableau obj[]={a,b,sum(c)}
    	
     }
        }
    A+

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Ouais en effet. N'oublie pas de cocher "resolu" , ca aide les autres pour les recherches

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

Discussions similaires

  1. [EF] Entite SQL - Requête dans une clause select
    Par Marsupilami_00 dans le forum Accès aux données
    Réponses: 0
    Dernier message: 20/11/2009, 11h05
  2. Réponses: 7
    Dernier message: 08/07/2008, 19h41
  3. 3 conditions dans une clause SELECT
    Par Aurèl90 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 03/11/2005, 16h05
  4. If dans la clause SELECT...
    Par argv666 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 29/10/2005, 07h13
  5. Sous-requête dans la clause Select
    Par Danger dans le forum WinDev
    Réponses: 2
    Dernier message: 24/05/2005, 17h33

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