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