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

JPA Java Discussion :

problème avec requette qurery


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 180
    Par défaut problème avec requette qurery
    salut,

    je suis entrain de faire statistique avec une application JEE

    le statistique est faite selon les nombres des utilisateurs qui sont inscrit dans une année bien spécifique

    c'est pour cela je dois faire une méthode dans le projet EJB et spécialement

    UserDao

    mon idée est de faire récupérer tous les utilisateurs

    et après on fait un parcours de cette liste récupérées
    pour savoir les nombres des utilisateurs


    la class User.java contient un attribut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	private Date dateCreation;
    la methode dans UserDao est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public List<User> nombreUser(int annee ) {
    		Query query=entityManager.createQuery("select e from User e where e.dateCreation.getYear=:param");
    		query.setParameter("param", annee);
    		return (List<User>) query.getResultList();
     
    	}
    et pour savoir les nombres des utilisateurs

    je fait comme celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    List<User> users=ServiceDao.nombreUser(2012);
    	  int p=0;
     
    	  for(User u:users)
    	  {
    		  p++;
     
    	  }
      System.out.println(p);
    mais lors de l’exécution cette erreur est affichée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    could not resolve property: getYear of: com.User [select e from com.persistence.User e where e.dateCreation.getYear=:param]
    merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut


    parce que getYear n'est pas une propriété de e.dateCreation. Si e.dateCreation est une date, utilise la fonction sql year

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query query=entityManager.createQuery("select e from User e where year(e.dateCreation) =:param");
    Sinon, quel implémentation tu utilises?

    A+.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 180
    Par défaut
    merci pour votre réponse

    je vous montrer le format de date que j'utilise

    dans la class User.java

    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
     
    private Date dateCreation;
    @Temporal(TemporalType.DATE)
    public Date getDateCreation() {
    		return dateCreation;
    	}
     
     
     
     
     
     
    	public void setDateCreation(Date dateCreation) {
    		this.dateCreation = dateCreation;
    	}
    donc dans la base de donnée

    un exemple de valeur qui sera stocké dans la colle dateCreation :

    c'est pour cela je pense que la methode qui vous avez donné ne donne pas l'année mais compare date complète avec année

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Dans ta requête, tu veux récupères les "User" créés en l'année passée en paramètre ":param", et c'est ce que j'ai corrigé.
    J'ai demandé quel implémentation tu utilises pour ton JPA? Parce qu'avec eclipselink (et autre), tu peux utiliser FUNC('YEAR', e.dateCreation) pour récupérer l'année.



    A+.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 180
    Par défaut
    merci beaucoup pour votre réponse

    je travail avec JPA Hibernate

    votre code ca marche sans erreurs

    mais j'ai un autre question

    en faite dans ma base de donnée j'ai un seul utilisateur qui a comme valeurs

    pour la date de creation
    avec le code de calcul de nombre des utilisateurs

    avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    List<User> users=ServiceDao.nombreUser(2012);
    	  int p=0;
     
    	  for(User u:users)
    	  {
    		  p++;
     
    	  }
      System.out.println(p);
    la valeur de p = 1 ( c'est juste)
    mais si je veux savoir le mois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    List<User> users=ServiceDao.nombreUser(2012);
    	  int p=0;
     
    	  for(User u:users)
    	  {
    		  p++;
      System.out.println( u.getDateCreation().getMonth());
    	  }
      System.out.println(p);
    il m'affiche mais comme je dis dans la base donnée j'ai

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    En java, le mois de Date et Calendar est de 0 à 11, donc tu dois faire un "+1".

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

Discussions similaires

  1. [MySQL] problème avec requette mysql
    Par sinifer dans le forum PHP & Base de données
    Réponses: 29
    Dernier message: 18/11/2009, 08h06
  2. problème avec jointure dans ma requette
    Par sinifer dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/07/2009, 16h48
  3. problème avec requette mysql
    Par minooo dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/12/2007, 08h55
  4. problème avec requette regroupement
    Par stef_445 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 16/11/2007, 11h22
  5. problème avec une requette inserer
    Par ulysse031 dans le forum JDBC
    Réponses: 12
    Dernier message: 03/02/2007, 10h15

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