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:
l'erreur surgit au moment où j'essaye d'enregistrer ou modifier une commande:
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; }
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.
Au fait le problème est avec la clé étrangère 'code_cmd' qui se trouve dans ligne_cmd.org.hibernate.exception.ConstraintViolationException: Cannot add or update a child row a foreign key constraint fails....
J'ai tout tanté, mais je n'y arrive à comprendre pourquoi cet erreur!
Merci d'avance!
Partager