我正在使用 JPA 2.0 和 Hibernate。我有一个 User 类和一个 Group 类,如下所示:
public class User implements Serializable {
@Id
@Column(name="USER_ID")
private String userId;
@ManyToMany
@JoinTable(name = "USER_GROUP",
joinColumns = {
@JoinColumn(name = "GROUP_ID")
},
inverseJoinColumns = {
@JoinColumn(name = "USER_ID")
}
)
private Set<Group> groupList;
//get set methods
}
public class Group
{
@Id
@Column(name="GROUP_ID")
private String groupId;
@ManyToMany(mappedBy="groupList")
private Set<User> memberList;
//get set methods
}
然后,我创建了一个用户和组,并将用户分配到该组。
我想要的是当我删除该组时,该组将被删除(当然),并且该组拥有的所有用户-组关系将自动从USER_GROUP联接表中删除,但该用户本身不会从USER表中删除。
使用我上面提供的代码,只有GROUP表中的行将在删除组时被删除,而用户仍将在USER_GROUP联接表中保留与已删除组的条目。
如果我像这样在User类中放置级联:
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name = "USER_GROUP",
joinColumns =
{
@JoinColumn(name = "GROUP_ID")
},
inverseJoinColumns =
{
@JoinColumn(name = "USER_ID")
})
private Set<Group> groupList;
当我删除该组时,用户也会被删除!
有没有办法实现我想要的效果?