tôi có một thực thể chứa hai thực thể khác có mối quan hệ @ManyToOne.Hibernate và NonUniqueObjectException
@Entity
public class A extends Serializable{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne
@Cascade(CascadeType.SAVE_UPDATE)
private B b;
@ManyToOne
@Cascade(CascadeType.SAVE_UPDATE)
private C c;
}
Nếu tôi cố gắng tiết kiệm một Một ví dụ mà có "B_ID" và "C_ID" của người khác Một hồ sơ tôi nhận được ngoại lệ:
org.hibernate.NonUniqueObjectException: một đối tượng khác nhau với cùng giá trị định danh đã được gắn liền với phiên
Ví dụ:
A table
| ID | B_ID | C_ID |
| 1 | 1 | null | // this works
| 2 | null | 1 | // this works
| 3 | 1 | x | // this throws the exception
| 4 | x | 1 | // this throws the exception
x=any value of existent B/C_ID
B_ID và C_ID không phải là duy nhất trong mô hình của tôi và (B_ID + C_ID) không phải là một ràng buộc duy nhất !!
Tôi có thể làm gì?
Cảm ơn trước.
Cảm ơn, những thứ duy nhất tôi tải từ db là B và C, và tôi sử dụng chúng trong đối tượng A. Nhưng B và C có CascadeType.SAVE_UPDATE, vì vậy họ không được lưu lại, nhưng chỉ cập nhật ... tôi hy vọng ... – blow
Các vấn đề xuất hiện lúc bắt đầu quá, khi phiên là mới. – blow
loại bỏ các chỉ thị thác hoạt động tốt, nhưng ... TẠI SAO ??? Nếu không có "Cascade.SAVE_UPDATE" hibernate nên cố gắng để tiết kiệm "A" và "B" đã được trình bày trong db và do đó ném một ngoại lệ, nhưng nó hoạt động thay vì ... tại sao? – blow