我有两个表
用户
Id|名称
1|用户1
2|用户2
用户帮助程序(_H)
user_id | helper_id
1|2
user_id&helper_id是用户表中引用的id。
现在,当我删除用户1时,该条目将从Mapping表中删除。但当我删除2时,我得到一个异常,说它在映射表中被引用了
这是我的实体代码
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name = "user_helper", joinColumns = {
@JoinColumn(name = "user_id", updatable = false)}, inverseJoinColumns = {
@JoinColumn(name = "helper_id", updatable = false)})
private Set<Users> helpers;
我缺少什么
删除helper时,必须首先从任何引用它的用户中删除它。这将从联接表中清除对它的引用。
user.getHelpers().remove(helper);
session.delete(helper);
我通过在Users实体中添加一个映射行作为来实现它
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name = "user_helper", joinColumns = {
@JoinColumn(name = "helper_id", updatable = false)}, inverseJoinColumns = {
@JoinColumn(name = "user_id", updatable = false)})
private Set<Users> users;
在删除之前,我清除了用户
userEntity.getUsers().clear(); // so, if there are any users associated with helpers, it will be cleared from mapping table
userEntityDAO.delete(userEntity);