繁体   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