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 :

Problème requete HQL


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 372
    Par défaut Problème requete HQL
    Bonjour, j'ai une une classe pointage, contenant les numero de semaine par rapport a l'annee, date debut semaine, date fin semaine, date realisation de la tache (inclu entre les deux dates debut et fin d'une semaine) et sa durée, cette classe il contient un objet de type Ressource, (idRessource c'est une clé etrangère dans la table pointage)
    je veux récupérer la liste des pointages d'une ressource, ainsi que la somme des duree des taches réalisées au cours de chaque semaine.

    j'ai mis la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       public List getPointageParRessourceConnecte(Long idr){
    		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    return session.createQuery("select p, sum(p.dureeTache)" +
    				" from Pointage p group by p.numSemaine, p.debutSemaine, p.finSemaine having
    				 p.rce.idRessource=:id").setParameter("id", idr).list();		
    	}
    Mais il me retourne une exception relatifs a la syntaxe de la requete HQL !

    Vous avez une idée ?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Ta requete n'est pas très logique car tu souhaites récupérer tout les pointage p dont p.rce.idRessource = tonParam, mais en même temps tu souhaites y associer une aggrégation de plusieurs objets Pointage.

    En enlevant le p du select ça marchera peut-être mieux et having doit être remplacé par where
    session.createQuery("select sum(p.dureeTache)" +
    " from Pointage p group by p.numSemaine, p.debutSemaine, p.finSemaine where
    p.rce.idRessource=:id").setParameter("id", idr).list();

    En fait que souahites tu récuperer comme information ?

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 372
    Par défaut
    Ma classe pointage est définit comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	private Long idPointage;
    	private int numSemaine;
    	private Date debutSemaine;
    	private Date finSemaine;
    	private Date datePointage;
    	private Date dateRealisationTache;
    	private Long idProjet;
    	private Long idTache;
    	private int dureeTache;
    	private String statut;
    	private String motifRejet;
    	private Ressource rce;
    debut semaine c'est toujours un debut semaine, la meme chose pour fin semaine, et le numsemaine c'est le numero de semaine par rapport a l'année, cela veut dire que si je fait un group by selon le numsemaine, ca va se faire meme pour le debut semaine et fin semaine, cad que le meme numsemaine correspond toujours au meme debut semaine et au meme fin semaine,

    Donc, le user va insérer dans la base, la duree de realisation d'une tache dans une journée lundi, mardi...vendredi, je que je veux faire moi c'est de récupéré la somme des duree des tache réalisé pendnat une semaine !

    j'aimerais bien que j'étais claire ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    session.createQuery("select p.numSemaine, sum(p.dureeTache)" +
    " from Pointage p group by p.numSemaine, p.debutSemaine, p.finSemaine "
    " where p.rce.idRessource=:id").setParameter("id", idr).list();

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 372
    Par défaut
    ca donne erreur de la syntaxe de la requete ?

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Verifie que la String du query est correctement créée.
    De plus ta jointure "p.rce.idRessource=:id" fonctionne elle ?
    Essaye çà
    session.createQuery("select p from Pointage p where p.rce.idRessource=:id").setParameter("id", idr).list();

  7. #7
    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 where doit se trouver avant le group by.

    Essaie peut-être ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select p, sum(p.dureeTache)
    from Pointage p
    where p.rce.idRessource=:id
    group by p.numSemaine, p.debutSemaine, p.finSemaine, p.dureeTache

  8. #8
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 372
    Par défaut
    il me dit que le group by c'est pas une expression

Discussions similaires

  1. [HQL] probléme requete HQL avec clause where in
    Par titawine dans le forum Hibernate
    Réponses: 3
    Dernier message: 16/05/2012, 10h02
  2. Problème Requete HQL
    Par cyclopsnet dans le forum Hibernate
    Réponses: 2
    Dernier message: 15/01/2010, 14h36
  3. problème du paramètre dans une requete hql
    Par moha_alnif dans le forum iReport
    Réponses: 4
    Dernier message: 01/05/2009, 20h50
  4. problème du paramètre dans une requete hql
    Par moha_alnif dans le forum Hibernate
    Réponses: 0
    Dernier message: 01/05/2009, 19h03
  5. problème : requete hql
    Par newmar dans le forum Hibernate
    Réponses: 8
    Dernier message: 22/04/2008, 17h56

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