Bonjour,
Je suis un peu perplexe sur un mapping dont la cascade ne fonctionne pas.
Il s'agit d'une simple relation @OneToMany.
Exemple :
Je souhaite supprimer les enfants du parent quand je supprime mon parent comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class Parent { [...] @OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }) @Sort(type = SortType.COMPARATOR, comparator = Child.class) private SortedSet<Child> childs; } class Child{ [...] @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "idParent") private Parent parent
A noter que getCurrentSession() retourne une session Hibernate.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 getCurrentSession().delete(myParentObject);
Pourtant quand j'exécute ce code j'ai une erreur à cause d'une contrainte de clé étrangère sur mes enfants, signe que les enfants ne sont pas supprimé.
J'ai tout de même fait le test de désactiver la contrainte, et effectivement l'enfant est toujours présent après la suppression du parent.
Comment faire ?
Autre question, qui pourra m'intéresser dans le futur : si je ne souhaite pas supprimer les enfants à la suppression de mon parent, mais simplement mettre à 'null' la clé étrangère dans celui-ci : est-il possible de le faire uniquement via le mapping ou dois-je le faire manuellement ?
Merci
Partager