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 :

correction d'une requête (jpa ql)


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 139
    Par défaut correction d'une requête (jpa ql)
    bonjour,
    est ce quelqu'un pourra me dire où est l'erreur dans cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Query q=em.createQuery("select sum(o.montant) from Operation o join o.codTransac t join o.codCaisse c where (t.sens='D')and (to_char(c.dateCaisse,'MM/DD/YYYY')=to_char(o.dateOp,'MM/DD/YYYY'))");
    merci

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 139
    Par défaut
    salut,
    je crois qu'en jpa ql on ne peux pas utiliser 'to_char' ,
    alors comment je peux comparer 2 dates?
    merci

  3. #3
    Membre expérimenté

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Par défaut
    Tu n'as pas besoin de convertir tes dates.
    Les opérations de comparaisons sont supportées pour les types dates.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 139
    Par défaut
    salut,
    en fait j'ai utilisé l'opérateur = et ça n'a pas marché, et c'est pour cette raison que j'ai eu recours à to_char pour essayer,mais il parait que le problème n'est pas lié à la date, voilà ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       sumd = ((Long) em.createQuery("select sum(o.montant)from Operation o join o.codCaisse c  join o.codTransac tt  where (tt.sens='D')and (c.codeCaisse=:cod)and (o.dateOp =c.dateCaisse)")
               .setParameter("cod",code_file()).getSingleResult()).intValue();
    l'exception c'est "java.lang.NullPointerException"
    j'ai essayé plusieurs façon mais ça n'a pas marché,
    est ce que tu as une idée?
    merci

  5. #5
    Membre expérimenté

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Par défaut
    NullPointerException ne veut pas dire que ta requête est fausse mais que une de tes références objet sur laquelle tu appeles une méthode est nulle.
    Décompose ta ligne sur plusieurs lignes de code et passe en débugage pour voir qu'est ce qui est null

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 139
    Par défaut
    bonjour,
    oui tu as raison, voilà je l'ai décomposé:
    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
    public int getSumd() {
                EntityManager em = getEntityManager();
                 if (sumd == -1) {
                try {
                    Query q=em.createQuery("select sum(o.montant) from Operation o join o.codCaisse c  join o.codTransac tt  where (tt.sens='D')and (c.codeCaisse=:cod)and (o.dateOp =c.dateCaisse)")
                            .setParameter("cod",code_file());
                    Long mt=(Long) q.getSingleResult();
    //ligne suivante et celle qui cause l'exception
                    sumd = mt.intValue();
                } finally {
                    em.close();
                }
                 }
            return sumd;
        }
    et le problème est dans la ligne:sumd=mt.intValue();
    mais j'ai besoin de converir le resultat en Integer,car je vais faire des soustractions et des sommations après,aussi je vais le setter dans ma base dans un attribut de type Integer,
    tu as une idée ? merci

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

Discussions similaires

  1. Correction d'une requête qui affiche un pourcentage
    Par doudou2015 dans le forum Langage SQL
    Réponses: 23
    Dernier message: 05/06/2015, 02h00
  2. Correction d'une requête
    Par CLion dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/05/2015, 10h35
  3. [MySQL] Requête invalide venant d'une requête SQL correcte
    Par daplayzz dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 22/04/2009, 15h35
  4. Besoin d'une correction sur une requête
    Par Nessie37 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/12/2007, 18h47
  5. [MySQL] Afficher une date correctement après une requête
    Par Nerva dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 12/04/2006, 16h27

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