【发布时间】:2011-06-23 12:49:52
【问题描述】:
我正在使用 JPA 2.0 和休眠。我有一个 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;
当我删除组时,用户也会被删除!
有什么方法可以实现我想要的吗?
【问题讨论】:
标签: hibernate jpa many-to-many jpa-2.0 cascade