![](/img/trans.png)
[英]On delete CASCADE is not working in manyToMany mapping in hibernate
[英]Spring MVC + HIbernate ManyToMany mapping , delete cascade self join
我有兩張桌子
1 | 用戶1
2 | 用戶2
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;
我錯過了什么
刪除幫助程序時,必須先從引用它的任何用戶中刪除它。 這將從連接表中清除對其的引用。
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.