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:

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
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
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;
    }
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)

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.