簡體   English   中英

Spring MVC + HIbernate ManyToMany映射,刪除級聯自聯接

[英]Spring MVC + HIbernate ManyToMany mapping , delete cascade self join

我有兩張桌子

用戶

Id | 名稱

1 | 用戶1

2 | 用戶2

User_Helper

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM