Giả sử tôi có hai thực thể: Nhóm và Người dùng. Mọi người dùng có thể là thành viên của nhiều nhóm và mọi nhóm đều có thể có nhiều người dùng.
@Entity
public class User {
@ManyToMany
Set<Group> groups;
//...
}
@Entity
public class Group {
@ManyToMany(mappedBy="groups")
Set<User> users;
//...
}
Bây giờ tôi muốn xóa một nhóm (giả sử nó có nhiều thành viên).
Vấn đề là khi tôi gọi EntityManager.remove () trên một số Nhóm, nhà cung cấp JPA (trong trường hợp của tôi là Hibernate) không xóa các hàng khỏi bảng tham gia và thao tác xóa không thành công do các ràng buộc khóa ngoại. Gọi remove () trên Người dùng hoạt động tốt (tôi đoán điều này có liên quan đến phía sở hữu của mối quan hệ).
Vậy làm cách nào để xóa nhóm trong trường hợp này?
Chỉ có cách tôi có thể nghĩ ra là tải tất cả người dùng trong nhóm, sau đó đối với mỗi người dùng, hãy xóa nhóm hiện tại khỏi nhóm của mình và cập nhật người dùng. Nhưng tôi thấy thật nực cười khi gọi update () trên mọi người dùng từ nhóm chỉ để có thể xóa nhóm này.