Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

@OneToMany lỗi trong MySQL:Không thể xóa hoặc cập nhật hàng mẹ:ràng buộc khóa ngoại không thành công

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() .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chèn hàng mới vào cơ sở dữ liệu với cột AUTO_INCREMENT mà không chỉ định tên cột?

  2. Tại sao kết quả của tôi bị trùng lặp khi sử dụng truy vấn con?

  3. Kết nối với Cơ sở dữ liệu MySQL bằng Ứng dụng iOS của tôi

  4. SQL Division sử dụng 'không tồn tại' trong mysql

  5. Việc sử dụng LIMIT 1 có làm tăng tốc độ truy vấn trên khóa chính không?