2011-01-31 7 views
0

私はUserRoles(id、username、userroleを持つ)のセットを持つUser(id、username、password)を持っています。セット内のオブジェクトを削除する方法を休止状態にしますか?

事がマッピングされている方法、のUserRoleテーブルは次のようになります。ユーザーが高い役割を取得すると

USER_ROLE 
id 
username 
userrole 
userid 

、新しいと役割のセットを置き換え、「一般」から「管理者」に言いますそのような役割のセット:

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

最後に私は、ユーザーのための1つの役割があるようにしたい、しかし、2つはデータベースにあります。 userId = nullの「一般」と、正しいuserIdを持つ「管理者」の1つ。

私は最初の役割がuserIdをnullに設定する代わりに削除されるようにするために何をする必要がありますか?

助けてください、ありがとう! 奪う

答えて

2

あなたは彼らがコレクションから削除されたとき、これらの役割は、データベースから削除したい場合、あなたは(JPA 2.0注釈のために)orphanRemoval = trueでコレクションをマッピングする必要がありますかDELETE_ORPHANとXMLまたは事前のオプションを(カスケードHibernateの3.5バージョン)。

この場合、単にコレクションを置き換えることはできませんが、そのメソッドを使用して既存のコレクションを消去する必要があります(clear()など)。

も参照してください:

+0

カスケード= "全削除 - 孤児" を設定し、既存のコレクションをクリア働いているようです。ありがとう! –

関連する問題