最佳答案
假设我有两个实体: Group 和 User。每个用户可以是许多组的成员,每个组可以有许多用户。
@Entity
public class User {
@ManyToMany
Set<Group> groups;
//...
}
@Entity
public class Group {
@ManyToMany(mappedBy="groups")
Set<User> users;
//...
}
现在我想删除一个组(假设它有许多成员)。
问题是,当我在一些组上调用 EntityManager.move ()时,由于外键约束,JPA 提供程序(在我的例子中是 Hibernate) 不从联接表中删除行和 delete 操作失败。在 User 上调用 move ()可以正常工作(我猜这与拥有关系有关)。
那么在这种情况下,我如何删除一个组呢?
我能想到的唯一方法是加载组中的所有用户,然后为每个用户从他的组中删除当前组并更新用户。但是对我来说,仅仅为了能够删除这个组而对组中的每个用户调用 update ()是很荒谬的。