[JPox] NullPointerException aprés un SELECT
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):
Code:
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;
...
} |
Voici le fichier jdo correspondant:
Code:
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> |
J'ai réalisé plusieurs insertions avec succées mais lorsque je veux faire un select j'obtient cette erreur:
Citation:
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)
Voici donc l'instruction ou je fais mon select:
Code:
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;
} |
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. :roll: