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 : 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;
 
       ...
}
Voici le fichier jdo correspondant:
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>
J'ai réalisé plusieurs insertions avec succées mais lorsque je veux faire un select j'obtient cette erreur:
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 : 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;
	}
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.