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 :

exception occurred while creating a query in entitymanager


Sujet :

JPA Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 139
    Par défaut exception occurred while creating a query in entitymanager
    bonjour,
    je voulais que le champ tot_d (total débit) de ma table info_arrete prend comme valeur la somme des montant de la table operation, et voilà le code que j'ai écrit ,
    je n'aarive pas à localiser le problème qui cause l'exception;
    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
    public void Opinfo() {
            EntityManager em = getEntityManager();
            try {
                Query q = em.createQuery("select sum(o.montant) from Operation o,Transaction t,Caisse c where (o.cod_caisse=c.code_caisse)and(t.sens='C')and(o.cod_transac=t.code)");
                infoArrete.setTotD((BigInteger) q.getSingleResult()) ;
            } finally {
             em.close();
            }
        } 
        public String create() {
                    EntityManager em = getEntityManager();
            try {
                utx.begin();
    //appel de la procedure Opinfo()
                Opinfo();
                utx.persist();
                utx.commit();
                      } catch (Exception ex) {
                try {
                    if (findInfoArrete(infoArrete.getCodeInfo()) != null) {
                        addErrorMessage("InfoArrete " + infoArrete + " existe déjà");
                    } else {
                        ensureAddErrorMessage(ex, "A persistence error occurred.");
                    }
                    utx.rollback();
                } catch (Exception e) {
                    ensureAddErrorMessage(e, "An error occurred attempting to roll back the transaction.");
                }
                return null;
            } finally {
                em.close();
            }
            return listSetup();
        }
    je veux ajouter que j'ai tester la requête sur oracle et elle donne le resultat
    j'espère que quelqu'un pourra m'aider
    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,
    bien sûr , persist(); c'est faux ,ce qui est juste c'est persist(infoArrete);(je parle du code inséré au dessus)
    c'est une faute de frappe,

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par chflb Voir le message
    bonjour,
    je voulais que le champ tot_d (total débit) de ma table info_arrete prend comme valeur la somme des montant de la table operation, et voilà le code que j'ai écrit ,
    je n'aarive pas à localiser le problème qui cause l'exception;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void Opinfo() {
            EntityManager em = getEntityManager();
            try {
                Query q = em.createQuery("select sum(o.montant) from Operation o,Transaction t,Caisse c where (o.cod_caisse=c.code_caisse)and(t.sens='C')and(o.cod_transac=t.code)");
                infoArrete.setTotD((BigInteger) q.getSingleResult()) ;
            } finally {
             em.close();
            }
        }
    je veux ajouter que j'ai tester la requête sur oracle et elle donne le resultat
    j'espère que quelqu'un pourra m'aider
    merci
    comment avez-vous testé sous Oracle ?

    en exécutant

    "select sum(o.montant) from Operation o,Transaction t,Caisse c where (o.cod_caisse=c.code_caisse) and (t.sens='C') and (o.cod_transac=t.code)"

    dans un outil genre Toast ou JDeveloper ?

    ou en convertissant vous-même cette expression en SQL ?

    dans le premier cas :
    vous avez simplement exécuté une expression JQL en SQL…
    et vous avez eu la malchance que le JQL soit aussi une expression SQL valide… mais dont la sémantique n'est évidemment pas nécessaire la même… (utiliser alors executeNativeQuery pour réellement faire la même chose…)
    (ou tout simplement vous êtes distrait et vous passez du SQL à executeQuery… si c'est ça en utilisant des NamedQuery vos auriez eu le problème dès le lancement du programme ce qui vous aurait attiré l'attention sur la vrai nature du problème…)

    dans le deuxième cas, c'est que la conversion JQL -> SQL faites par votre ORM n'est pas ce que vous pensez…


  4. #4
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 139
    Par défaut
    comment avez-vous testé sous Oracle ?

    en exécutant

    "select sum(o.montant) from Operation o,Transaction t,Caisse c where (o.cod_caisse=c.code_caisse) and (t.sens='C') and (o.cod_transac=t.code)"

    dans un outil genre Toast ou JDeveloper ?

    ou en convertissant vous-même cette expression en SQL ?
    oui, j'ai exécuté la requête sur oracle(10g)(il supporte SQL3 :extension objet de SQL),

    en tout cas, j'ai trouvé la solution,le seul problème c'est que l'entity class from database générée par netbeans transforme cod_transac en codTransac(de même pour les autres),

    merci
    @+

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

Discussions similaires

  1. [2.x] An exception occurred while executing 'INSERT INTO
    Par timal78 dans le forum Symfony
    Réponses: 10
    Dernier message: 21/02/2014, 10h37
  2. Réponses: 0
    Dernier message: 06/01/2010, 22h05
  3. Réponses: 6
    Dernier message: 30/06/2009, 18h15
  4. [Axis2] Exception occurred while trying to invoke service method
    Par wifsimster dans le forum Services Web
    Réponses: 3
    Dernier message: 06/06/2009, 20h03
  5. [EJBQL] An exception occured while creating a query in EntityManager
    Par Asmod_D dans le forum Java EE
    Réponses: 3
    Dernier message: 30/01/2008, 10h39

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