Salut à tous,
Je suis en train d'apprendre le maniement de JPox (pas facile).
J'ai pris au départ une classe simple avec juste une clé primaire comme difficulté, la voici (classe Outil):
Voici le fichier jdo correspondant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 package Capitalisation.dossier; public class Outil { private String id_outil; private String nom; private String id_technologie; ... }
J'ai réalisé plusieurs insertions avec succées mais lorsque je veux faire un select j'obtient cette erreur:
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 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd"> <jdo> <package name="Capitalisation.dossier"> <class identity-type="application" name="Outil" objectid-class="Capitalisation.dossier.OutilIdKey"> <field name="id_outil" primary-key="true"> <column name="id_outil"/> </field> <field name="nom" null-value="none" primary-key="false" persistence-modifier="persistent"> <column length="45" jdbc-type="VARCHAR"/> </field> <field name="id_technologie" null-value="none" primary-key="false" persistence-modifier="persistent"> <column jdbc-type="INTEGER"/> </field> <query name="selectAll_sql" language="javax.jdo.query.SQL"><![CDATA[ SELECT * FROM outil where id_outil = ? ]]></query> <query name="selectAll_jdosql" language="javax.jdo.query.JDOQL"><![CDATA[ SELECT FROM Capitalisation.dossier.Outil ]]></query> </class> </package> </jdo>Voici donc l'instruction ou je fais mon select:Exception in thread "main" java.lang.NullPointerException
at org.jpox.store.rdbms.table.ClassTable.getFieldMapping(ClassTable.java:1541)
at org.jpox.store.rdbms.table.ClassTable.getFieldMapping(ClassTable.java:1583)
at org.jpox.store.expression.TableExpression.newFieldExpression(TableExpression.java:111)
at org.jpox.store.query.JDOQLQuery$Compiler.compileIdentifier(JDOQLQuery.java:1483)
at org.jpox.store.query.JDOQLQuery$Compiler.compilePrimary(JDOQLQuery.java:1267)
at org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpressionNotPlusMinus(JDOQLQuery.java:1213)
at org.jpox.store.query.JDOQLQuery$Compiler.compileUnaryExpression(JDOQLQuery.java:1194)
at org.jpox.store.query.JDOQLQuery$Compiler.compileMultiplicativeExpression(JDOQLQuery.java:1147)
at org.jpox.store.query.JDOQLQuery$Compiler.compileAdditiveExpression(JDOQLQuery.java:1124)
at org.jpox.store.query.JDOQLQuery$Compiler.compileRelationalExpression(JDOQLQuery.java:1093)
at org.jpox.store.query.JDOQLQuery$Compiler.compileEqualityExpression(JDOQLQuery.java:1070)
at org.jpox.store.query.JDOQLQuery$Compiler.compileAndExpression(JDOQLQuery.java:1058)
at org.jpox.store.query.JDOQLQuery$Compiler.compileExclusiveOrExpression(JDOQLQuery.java:1046)
at org.jpox.store.query.JDOQLQuery$Compiler.compileInclusiveOrExpression(JDOQLQuery.java:1034)
at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalAndExpression(JDOQLQuery.java:1022)
at org.jpox.store.query.JDOQLQuery$Compiler.compileConditionalOrExpression(JDOQLQuery.java:1004)
at org.jpox.store.query.JDOQLQuery$Compiler.compileExpression(JDOQLQuery.java:981)
at org.jpox.store.query.JDOQLQuery$Compiler.compileQueryStatement(JDOQLQuery.java:859)
at org.jpox.store.query.JDOQLQuery.compile(JDOQLQuery.java:597)
at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:654)
at org.jpox.store.query.Query.executeWithMap(Query.java:868)
at org.jpox.store.query.Query.executeWithArray(Query.java:848)
at org.jpox.store.query.Query.execute(Query.java:780)
at Capitalisation.dossier.sql.OutilTx.selectAll(OutilTx.java:44)
at Capitalisation.test.MainTest.main(MainTest.java:43)
Voilà, voyez vous pkoi j'obtient cette erreur?! Comme si le select ne renvoyait rien. Pourtant j'ai regardé dans les logs, et le select se fait bien et je n'ai pas d'SQL exception.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public Collection selectAll(){ tx.begin(); Query q = pm.newQuery(Outil.class, "select * from outil"); //Query q = pm.newNamedQuery(Outil.class, "selectAll_jdosql"); Collection c = (Collection)q.execute(); //ICI NULL POINTER EXCEPTION afficher(c); tx.commit(); return c; }![]()
Partager