ManyToMany使用hibernate删除删除

时间:2016-03-10 07:55:19

标签: hibernate

我有域User,可能有许多UserResetPasswordCode

代码是:

用户:

@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = DomainConstant.VIEW_USER_USER_RESET_PASSWORD, joinColumns = {
    @JoinColumn(name = DomainConstant.DOMAIN_USER_ID)}, inverseJoinColumns = {
    @JoinColumn(name = DomainConstant.TABLE_USER_RESET_PASSWORD_ID)})
private Set<UserResetPasswordCode> setOfResetPassword = new HashSet<>();

UserResetPasswordCode:

@ManyToMany(mappedBy = "setOfResetPassword")
private Set<User> setOfResetPassword = new HashSet<>();

问题是,我想删除UserResetPasswordCode中的项目。

我的代码无效:

User user = userDao.findUserById(1); //really exist :-)
for (UserResetPasswordCode loop : user.getSetOfResetPassword()) {
    u.getSetOfResetPassword().remove(loop2);
}

代码仅从name = DomainConstant.VIEW_USER_USER_RESET_PASSWORD删除值,但域UserResetPasswordCode中的值仍然存在。哪里有问题?谢谢你的建议。

1 个答案:

答案 0 :(得分:0)

不幸的是,ManyToMany不支持OneToMany注释存在的orphanRemoval属性。所以有必要自己删除它们。

一般来说,我避免使用mutch的级联,因为以正确的方式使用它并不容易。