Hibernate, cannot add or update a child row a foreign key constraint fails
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:
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.
Citation:
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!