【发布时间】:2017-08-30 07:55:38
【问题描述】:
在我的 Spring boot 应用中,有两种类型的实体:User 和 Group:
- 用户可以拥有 0 到 N 个群组
- 组可以有 1 到 M 个成员
在User 类中,有一个Group 列表,他/她拥有或者是其成员,在Group 类中,有一个User 列表(即成员)。
这些类使用休眠注释相互引用。
class User {
@ManyToMany(cascade = CascadeType.REFRESH)
private List<Group> groups;
}
class Group {
@ManyToOne(cascade = CascadeType.REFRESH)
@NotNull
@JoinColumn(name="OWNER_ID", referencedColumnName="id")
private User owner;
@ManyToMany
@JoinTable(joinColumns = @JoinColumn(referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(referencedColumnName = "id"))
private List<User> members;
}
在User 服务层中有一个Delete 方法应该从存储库中删除用户。此删除应触发一系列操作:该用户拥有的所有组都将被删除,并且已删除的组应从其成员的组列表中删除。所有这些都应该保存到存储库中。
如果我向这个网络添加其他类型的实体,这个过程会变得更加复杂。
我的问题是:hibernate 不会自动处理这个问题吗?我是不是应该把每个成员都抓起来,一个一个地删除组,然后保存到存储库中?
【问题讨论】: