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
j'ai obtenu le message d'erreur suivant :
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;
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
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)
Je comprends pas pourquoi
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")})
Si quelqu'un peut m'eclairssir un peu les choses je serais vraiment reconnaissante
![]()
Partager