2011-01-31 66 views
0

我有一個對象有一組UserRoles(有id,用戶名,userrole)的用戶(有id,用戶名,密碼)。Hibernate如何刪除集合中的對象?

東西被映射的方式,UserRole的表看起來像這樣:

USER_ROLE 
id 
username 
userrole 
userid 

當用戶獲得更高的角色,從「一般」說爲「admin」,用新的替換集角色這樣的角色集:

User u = userService.findById(userId); 
Set<UserRole> roles = new HashSet<UserRole>(); 
roles.set(new UserRole(u.getUsername(), "ADMIN"); 
userService.update(u); 

最後我希望有一個角色爲用戶,但有兩個在數據庫中。一個userId = null的「GENERAL」和一個具有正確userId的「ADMIN」。

任何想法我需要做的是,第一個角色被刪除而不是將userId設置爲空?

需要幫助,謝謝! 搶

回答

2

如果你想這些角色從當他們從集合中刪除數據庫中刪除,你需要收集與orphanRemoval = true地圖(對於JPA 2.0註解)或DELETE_ORPHAN級聯選項(XML或預3.5版本的Hibernate)。

雖然在這種情況下,您不能簡單地替換集合,但您需要使用其方法清除現有集合,例如clear()

參見:

+0

設置級聯= 「全刪除,孤兒」,並清除現有的集合似乎已經奏效。謝謝! – 2011-01-31 17:40:13

相關問題