我有两张桌子
1 |用户1
2 |用户2
user_id | helper_id
1 | 2
user_id& helper_id是来自users表的引用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;
我缺少什么
答案 0 :(得分:0)
删除帮助程序时,必须先从引用它的任何用户中删除它。这将清除连接表中对它的引用。
user.getHelpers().remove(helper);
session.delete(helper);
答案 1 :(得分:0)
我通过在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);