2016-03-10 197 views
0

我有域User其中可能有許多UserResetPasswordCodeManyToMany刪除使用休眠

的代碼是:

用戶:

@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

不幸的是,ManyToMany不支持OneToMany註釋存在的orphanRemoval屬性。所以有必要自行刪除它們。

一般來說,我避免使用級聯mutch,因爲它不是很容易以正確的方式使用它。