我有域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
中的值仍然存在。哪里有问题?谢谢你的建议。
答案 0 :(得分:0)
不幸的是,ManyToMany不支持OneToMany注释存在的orphanRemoval属性。所以有必要自己删除它们。
一般来说,我避免使用mutch的级联,因为以正确的方式使用它并不容易。