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 de jointure dans une relation many to one


Sujet :

JPA Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 111
    Points : 49
    Points
    49
    Par défaut problème de jointure dans une relation many to one
    Bonjour à tous,

    Je débute en JPA, je travaille avec toplink sous NetBeans 6.1 dans un projet java

    J'ai deux Classe Vente et client reliées par la relation many to one: dans la classe vente l'atribut refclient est de type classe Client.

    Je veux faire une recherche sur le champs client, j''ai utilisé la requete suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Client client = findClient(T1.getText());
      query = "SELECT v FROM Vente v where v.refClient = " + client;
    j'ai obtenu le message d'erreur suivant :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager
            at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:707)
            at Frames.Consultation.OKActionPerformed(Consultation.java:341)
            at Frames.Consultation.access$400(Consultation.java:25)
            at Frames.Consultation$5.actionPerformed(Consultation.java:113)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
            at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
            at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
            at java.awt.Component.processMouseEvent(Component.java:6041)
            at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
            at java.awt.Component.processEvent(Component.java:5806)
            at java.awt.Container.processEvent(Container.java:2058)
            at java.awt.Component.dispatchEventImpl(Component.java:4413)
            at java.awt.Container.dispatchEventImpl(Container.java:2116)
            at java.awt.Component.dispatchEvent(Component.java:4243)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
            at java.awt.Container.dispatchEventImpl(Container.java:2102)
            at java.awt.Window.dispatchEventImpl(Window.java:2440)
            at java.awt.Component.dispatchEvent(Component.java:4243)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    Caused by: Exception [EclipseLink-8034] (Eclipse Persistence Services - 1.0 (Build SNAPSHOT - 20080422)): org.eclipse.persistence.exceptions.JPQLException
    Exception Description: Error compiling the query [SELECT v FROM vente v where v.refclient=1234]. Unknown abstract schema type [vente].
            at org.eclipse.persistence.exceptions.JPQLException.unknownAbstractSchemaType(JPQLException.java:470)
            at org.eclipse.persistence.internal.jpa.parsing.ParseTreeContext.classForSchemaName(ParseTreeContext.java:138)
            at org.eclipse.persistence.internal.jpa.parsing.SelectNode.getClassOfFirstVariable(SelectNode.java:312)
            at org.eclipse.persistence.internal.jpa.parsing.SelectNode.getReferenceClass(SelectNode.java:301)
            at org.eclipse.persistence.internal.jpa.parsing.ParseTree.getReferenceClass(ParseTree.java:439)
            at org.eclipse.persistence.internal.jpa.parsing.ParseTree.adjustReferenceClassForQuery(ParseTree.java:79)
            at org.eclipse.persistence.internal.jpa.parsing.JPQLParseTree.populateReadQueryInternal(JPQLParseTree.java:103)
            at org.eclipse.persistence.internal.jpa.parsing.JPQLParseTree.populateQuery(JPQLParseTree.java:84)
            at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:207)
            at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:170)
            at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:134)
            at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:95)
            at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:80)
            at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:705)
    RQ: j'ai remarqué lors de la génération des Classes de mapping Vente, toplink engendre les requêtes qu'on peut utilisé sur tous les attributs sauf pour l'attribut refClient qui est de type Classe Client

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @NamedQuery(name = "Vente.findByCodevente", query = "SELECT v FROM Vente v WHERE v.codevente = :codevente"),
    @NamedQuery(name = "Vente.findByDatevente", query = "SELECT v FROM Vente v WHERE v.datevente = :datevente"),
    @NamedQuery(name = "Vente.findByMontantPayer", query = "SELECT v FROM Vente v WHERE v.montantPayer = :montantPayer"), @NamedQuery(name = "Vente.findByMontantnPayer", query = "SELECT v FROM Vente v WHERE v.montantnPayer = :montantnPayer"), @NamedQuery(name = "Vente.findByModePayment", query = "SELECT v FROM Vente v WHERE v.modePayment = :modePayment"), @NamedQuery(name = "Vente.findByNumbonSortie", query = "SELECT v FROM Vente v WHERE v.numbonSortie = :numbonSortie")})
    Je comprends pas pourquoi



    Si quelqu'un peut m'eclairssir un peu les choses je serais vraiment reconnaissante


  2. #2
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    salut
    Ajoute les ":" dans ta requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query = "SELECT v FROM Vente v where v.refClient = :" + client;
    vérifie aussi l'implémentation de tes méthodes Equals et Hashcode de Client (et aussi de Vente)

Discussions similaires

  1. Problème de persistance avec une relation many-to-one
    Par cb-06 dans le forum Doctrine2
    Réponses: 3
    Dernier message: 28/11/2012, 16h24
  2. Récupérer données dans une relation many to one
    Par phpestpuissant dans le forum Seam
    Réponses: 1
    Dernier message: 17/10/2012, 00h08
  3. Réponses: 0
    Dernier message: 12/02/2012, 17h02
  4. Réponses: 1
    Dernier message: 10/06/2009, 14h15
  5. Réponses: 3
    Dernier message: 26/02/2007, 10h14

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