Bonjour a tous,
j'ai passé toute la journée devant cette étrange problème sans résultat... j'explique:
le principe est trés simple , j'ai deux tables Mere et Fil:
le code SQL correspondant est comme suit:
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 CREATE TABLE mere ( idmere INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nom VARCHAR(50) NOT NULL, PRIMARY KEY(idmere) ); CREATE TABLE fil ( idfil INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, mere_idmere INTEGER UNSIGNED NOT NULL, nom VARCHAR(50) NOT NULL, PRIMARY KEY(idfil, mere_idmere), FOREIGN KEY(mere_idmere) REFERENCES mere(idmere) ON DELETE NO ACTION ON UPDATE NO ACTION );
avec Netbeans j'ai crée deux entités provenant de la base de donnée et deux controlleurs JPA a partir de ces deux entités (généré avec netbeans):
seulement je veux que lorsque j'insère une nouvelle ligne dans la table Mere une liste des Fil est inserée(avec) automatiquement(disons cascade), voila mon code:
un bout de code de la class FilPK :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 EntityManagerFactory emf=Persistence.createEntityManagerFactory("testvirugulePU"); MereJpaController mjc=new MereJpaController(emf); FilJpaController fjc=new FilJpaController(emf); Mere m=new Mere(null,"mere1");//un objet mere je met null car il est auto_increment FilPK fpk=new FilPK(); Fil f=new Fil(fpk,"fils1"); java.util.List<Fil> lf=new ArrayList<Fil>(); lf.add(f); m.setFilList(lf); // assigner la liste des Fil a l'objet Mere mjc.create(m); //insertion
remarque: j'ai mis FilPK fpk=new FilPK(); sans préciser l'idfil ni idMere car ils seront générer automatiquement(je ne suis pas sure)
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 @Embeddable public class FilPK implements Serializable { @Basic(optional = false) @Column(name = "IDFIL", nullable = false) private int idfil; @Basic(optional = false) @Column(name = "MERE_IDMERE", nullable = false) private int mereIdmere; public FilPK() { } public FilPK(int idfil, int mereIdmere) { this.idfil = idfil; this.mereIdmere = mereIdmere; }
il affiche cette erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Exception in thread "main" javax.persistence.EntityNotFoundException: Could not find entity for id: testvirugule.FilPK[ idfil=0, mereIdmere=0 ] at org.eclipse.persistence.internal.jpa.EntityManagerImpl.getReference(EntityManagerImpl.java:1279) at testvirugule.MereJpaController.create(MereJpaController.java:44) at testvirugule.Main.main(Main.java:31) Java Result: 1
Helps Please.
Partager