Bạn có hai lỗi.
Lỗi đầu tiên:bạn đã ánh xạ liên kết hai chiều giữa tiêu đề và chi tiết hai lần:một lần trong tiêu đề và một lần trong chi tiết. Khi bạn có liên kết hai chiều, một trong hai bên (một bên tiêu đề, trong trường hợp này) phải được khai báo là nghịch đảo của bên kia, bằng cách sử dụng mappedBy
thuộc tính:
@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, mappedBy = "reminderHeader")
@Cascade(value = { CascadeType.SAVE_UPDATE, CascadeType.DELETE })
@Fetch(FetchMode.SELECT)
private Set<ReminderDetails> reminderDetailslist;
Lỗi thứ hai:tầng DELETE chỉ được áp dụng khi bạn sử dụng Session.delete()
phương pháp xóa thực thể. Xóa truy vấn bỏ qua hoàn toàn phiên (có nghĩa là các thực thể bị truy vấn xóa nhưng đã tải trước đó vẫn ở trong phiên, ở trạng thái giống như thể không có truy vấn nào được thực thi).
Vì vậy, để phân tầng việc xóa, bạn sẽ phải thực hiện một truy vấn chọn để tìm tất cả các tiêu đề cần xóa, sau đó lặp lại các tiêu đề này và xóa chúng bằng cách sử dụng session.delete()
.