[英]Spring MVC + HIbernate ManyToMany mapping , delete cascade self join
I have two tables 我有两张桌子
1 | 1 | User 1
用户1
2 | 2 | User 2
用户2
user_id | user_id | helper_id
helper_id
1 | 1 | 2
2
The user_id & helper_id are referenced id from users table. user_id和helper_id是用户表中的引用ID。
Now, when I delete the user 1, the entry is deleted from Mapping table. 现在,当我删除用户1时,该条目将从Mapping表中删除。 But when I delete 2 , i get exception saying, it has been referenced in mapping table
但是当我删除2时,我得到例外说法,它已在映射表中引用
This is my entity code 这是我的实体代码
@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;
What am I missing 我错过了什么
When deleting helper, you must first remove it from any Users that reference it. 删除帮助程序时,必须先从引用它的任何用户中删除它。 That will clear the references to it from join table.
这将从连接表中清除对其的引用。
user.getHelpers().remove(helper);
session.delete(helper);
I got it working by adding one more mapping line in Users entity as 我通过在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;
and before deleting, i clear the users 在删除之前,我清除用户
userEntity.getUsers().clear(); // so, if there are any users associated with helpers, it will be cleared from mapping table
userEntityDAO.delete(userEntity);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.