Bonjour,
Je suis occupé avec une Enterprise Application que je développe sous Netbeans 6.5. Elle communique avec une base de données Derby et le Serveur d'applic est Glassfish v2. Le module WebApplication utilise le framework JSF.

Mon problème se produit lorsque je tente de rajouter un enregistrement dans une des tables de ma base de données.

J'ai droit à une erreur Http500 qui me dit par exemple au final :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Cause racine 
java.lang.IllegalArgumentException: Object: entities.Test[cle=10] is not a known entity type.
Je pensais au départ que le problème venait du fait que les clés de mes autres tables étaient auto-générées. Le message ci-dessus spécifiait alors [cle = null] vu que je ne la passait pas en paramètres pour la création de l'enregistrement.
J'ai donc créé une nouvelle table ("test") qui ne dispose pas de clé auto-générée mais le problème persiste (si je puis dire...bon ok mauvais jeu de mot).

Voici l'architecture de l'appli : l'utilisateur clique sur un commandlink dans une jsp, qui appelle la méthode record du managed bean spécifié.
Voici la méthode :
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
 
public class MyTest {
@EJB
private TestFacadeLocal tfl1;   //stateless bean
private String corps;
private Integer cle;
 
...
 
 public String record(){
        cle=new Integer(10);
        corps="fdehfieiegfh";
    Test test=new Test (cle,corps); //construction d'un objet Test
    tfl1.create(test);
    return null;
    }
 
....
je passe ensuite l'objet test créé à la méthode create de l'interface locale de mon stateless bean, qui se trouve dans un module ejb appartenant à l'enterprise application.

voici le code du create :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
 public void create(Test test) {
        em.persist(test);
    }
et voici mon entity Test :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
@Entity
@Table(name = "TEST")
@NamedQueries({@NamedQuery(name = "Test.findAll", query = "SELECT t FROM Test t"), @NamedQuery(name = "Test.findByCle", query = "SELECT t FROM Test t WHERE t.cle = :cle"), @NamedQuery(name = "Test.findByCorps", query = "SELECT t FROM Test t WHERE t.corps = :corps")})
public class Test implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "CLE")
    private Integer cle;
    @Basic(optional = false)
    @Column(name = "CORPS")
    private String corps;
 
    public Test() {
    }
 
    public Test(Integer cle) {
        this.cle = cle;
    }
 
    public Test(Integer cle, String corps) {
        this.cle = cle;
        this.corps = corps;
    }
 
    public int getCle() {
        return cle;
    }
 
    public void setCle(Integer cle) {
        this.cle = cle;
    }
 
    public String getCorps() {
        return corps;
    }
 
    public void setCorps(String corps) {
        this.corps = corps;
    }
 
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (cle != null ? cle.hashCode() : 0);
        return hash;
    }
 
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Test)) {
            return false;
        }
        Test other = (Test) object;
        if ((this.cle == null && other.cle != null) || (this.cle != null && !this.cle.equals(other.cle))) {
            return false;
        }
        return true;
    }
 
    @Override
    public String toString() {
        return "entities.Test[cle=" + cle + "]";
    }
 
}
Je m'y prend mal?Une idée?
J'ai pas mal cherché sur google mais je n'ai pas réussi à trouver de réponse. Ca fait un petit temps que je galère la-dessus et le temps disponible sur l'application commence à dangereusement diminuer. ...je stresse !
Merci d'avance.