Máte dvě chyby.
První chyba:obousměrné spojení mezi záhlavím a podrobnostmi jste mapovali dvakrát:jednou v záhlaví a jednou v podrobnostech. Když máte obousměrné přidružení, jedna strana (v tomto případě jedna strana záhlaví) musí být deklarována jako inverzní strana druhé strany pomocí mappedBy
atribut:
@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, mappedBy = "reminderHeader")
@Cascade(value = { CascadeType.SAVE_UPDATE, CascadeType.DELETE })
@Fetch(FetchMode.SELECT)
private Set<ReminderDetails> reminderDetailslist;
Druhá chyba:kaskáda DELETE se použije pouze při použití Session.delete()
způsob odstranění entity. Dotazy Delete zcela vynechají relaci (to znamená, že entity odstraněné dotazem, ale dříve načtené, zůstanou v relaci ve stejném stavu, jako kdyby nebyl proveden žádný dotaz).
Chcete-li tedy provést mazání kaskádovitě, budete muset provést výběrový dotaz, abyste našli všechna záhlaví, která chcete odstranit, a poté tato záhlaví ve smyčce a smažte je pomocí session.delete()
.