Spring MVC + HIbernate ManyToMany映射,删除级联自联接

时间:2015-02-12 12:18:15

标签: java hibernate spring-mvc

我有两张桌子

用户

Id |名称

1 |用户1

2 |用户2

User_Helper

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;

我缺少什么

2 个答案:

答案 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);
相关问题