Problème de Remove après Persist
Bonjour,
J'utilise 2 tables dans ma BDD déclarées comme ceci :
Table mère :
Code:
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() {
} |
Table fille :
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
| @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() {
} |
Méthode utilisée persister :
Code:
1 2 3 4 5 6 7
| public void creerRefCollectivite(RefCollectivite collectivite) {
try {
getEntityManager().persist(collectivite);
getEntityManager().flush();
} catch (Exception e) {
}
} |
La suppression en cascade fonctionne bien, sauf dans un cas : après création d'une nouvelle mère.
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]