Es kommt beim löschen eines BEs mit Hibernate zu folgenden Error:
„Cannot delete or update a parent row: a foreign key constraint fails„.
Im BE gibt es mehrere OneToMany Verbindungen wie z.B. diese
1 2 3 4 |
@OneToMany(mappedBy = "arzt", fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE}) private Set<Fachbereich> fachbereiche = new HashSet<>(); |
Wie kann nun ein kaskadierendes Löschen des BEs bewirkt werden?
Ein CascadeType.REMOVE in der Aufzählung ergänzen, so:
1 2 3 4 |
@OneToMany(mappedBy = "arzt", fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE}) private Set<Fachbereich> fachbereiche = new HashSet<>(); |
Das löst zwar das Problem mit der Exception, ist aber nicht so performant wie der Artikel „Why you should avoid CascadeType.REMOVE for to-many associations and what to do instead“ zeigt.