Bonjour,

Je travaille avec Spring, Hibernate et MySql, j'ai un soucis lors de l'enregistrement ou la modification d'une de mes tables:
j'ai 3 trois tables: cmd, ligne_cmd, et produit.
la table ligne_cmd est composite: elle contient des clés étrangères en référence aux clés primaires des tables cmd et produit.

et dans mes entités j'ai comme mappings hibernate:

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
@Entity
@Table(name="cmd")
public class Cmd{
@OnetoMany(Cascade={CascadeType.PERSISTE,CascadeType.MERGE, CascadeType.REMOVE}
@JoinColumn(name="code_cmd"
 @LazyCollection(LazyCollectionOption.FALSE)
ArrayList<LigneCmd> listLigneCmd;
}
 
@Entity
@Table(name="produit")
public class Produit{
@OnetoMany(Cascade={CascadeType.PERSISTE,CascadeType.MERGE, CascadeType.REMOVE}
@JoinColumn(name="code_produit"
 @LazyCollection(LazyCollectionOption.FALSE)
ArrayList<LigneCmd> listLigneCmd;
}
 
@Entity
@Table(name="ligne_cmd")
public class LigneCmd{
 
@ManytoOne(Optionnal=false)
@JoinColumn(name="code_produit", referencedColumnName="code_produit",insertable=false, updatable=false))
Produit produit;
 
@ManytoOne(Optionnal=false)
@JoinColumn(name="code_cmd", referencedColumnName="code_cmd",insertable=false, updatable=false))
Cmd cmd;
}
l'erreur surgit au moment où j'essaye d'enregistrer ou modifier une commande:

je fait:
CmdDao.save(cmd) ou CmdDao.merge(cmd);
sachant que cmd contient des lignes de commande et que chaque ligne de commande est déjà lié à un produit qui existe déjà dans la base.
org.hibernate.exception.ConstraintViolationException: Cannot add or update a child row a foreign key constraint fails....
Au fait le problème est avec la clé étrangère 'code_cmd' qui se trouve dans ligne_cmd.
J'ai tout tanté, mais je n'y arrive à comprendre pourquoi cet erreur!

Merci d'avance!