Bonjour,
J'utilise 2 tables dans ma BDD déclarées comme ceci :
Table mère :
Table fille :
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 @Entity @Table(name = "RefCollectivite") public class RefCollectivite implements Serializable { @OneToMany(cascade = CascadeType.REMOVE, mappedBy="refCollectivite") private Collection<ColPlanCompteM61> listePlanCompteM61; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int idPk; private String libelle; public RefCollectivite() { }
Méthode utilisée persister :
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 @Entity @Table(name = "ColPlanCompteM61") public class ColPlanCompteM61 implements Serializable{ @ManyToOne @JoinColumn(name = "REFCOLLECTIVITEFK", referencedColumnName = "IDPK", insertable = false, updatable = false, nullable = false) private RefCollectivite refCollectivite; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int idPk; private int refCollectiviteFk; private int refPlanCompteM61Fk; private Double valeur01; private Double valeur02; private Double valeur03; private Double valeur04; private Double valeur05; private Double valeur06; @Transient private RefPlanCompteM61 refPlanCompteM61; public ColPlanCompteM61() { }
La suppression en cascade fonctionne bien, sauf dans un cas : après création d'une nouvelle mère.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void creerRefCollectivite(RefCollectivite collectivite) { try { getEntityManager().persist(collectivite); getEntityManager().flush(); } catch (Exception e) { } }
Je crée une mère avec ses filles, puis je supprime la mère : il semble ne plus détecter la relation entre les 2 tables et du coup la contrainte de clé étrangère COLPLANCOMPTEM61_REFCOLLECTIVITE_FK provoque une erreur car elle n'est pas respectée (Il ne cherche pas à supprimer les filles).
J'obtiens l'erreur suivante :
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: DELETE sur la table 'REFCOLLECTIVITE' a entraîné la violation de la contrainte de clé étrangère 'COLPLANCOMPTEM61_REFCOLLECTIVITE_FK' pour la clé (265). L'instruction a été annulée (rollback).
Error Code: 20000
Call: DELETE FROM RefCollectivite WHERE (IDPK = ?) bind => [1 parameter bound]
Partager