Você tem dois erros.
Primeiro erro:você mapeou a associação bidirecional entre o cabeçalho e os detalhes duas vezes:uma no cabeçalho e outra nos detalhes. Quando você tem uma associação bidirecional, um dos lados (o lado do cabeçalho, neste caso) deve ser declarado como o inverso do outro lado, usando o
mappedBy
atributo:@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, mappedBy = "reminderHeader")
@Cascade(value = { CascadeType.SAVE_UPDATE, CascadeType.DELETE })
@Fetch(FetchMode.SELECT)
private Set<ReminderDetails> reminderDetailslist;
Segundo erro:a cascata DELETE só é aplicada quando você usa o
Session.delete()
método para excluir a entidade. As consultas de exclusão ignoram totalmente a sessão (o que significa que as entidades excluídas pela consulta, mas carregadas anteriormente, permanecem na sessão, no mesmo estado como se nenhuma consulta tivesse sido executada). Portanto, para cascatear a exclusão, você terá que executar uma consulta de seleção para encontrar todos os cabeçalhos a serem excluídos e, em seguida, percorrer esses cabeçalhos e excluí-los usando
session.delete()
.