我有一个对象User(有id,用户名,密码),有一组UserRoles(有id,username,userrole)。
事物的映射方式,UserRole表如下所示:
USER_ROLE
id
username
userrole
userid
当用户获得更高的角色时,例如从“general”到“admin”,将角色集替换为一组新的角色,如下所示:
User u = userService.findById(userId);
Set<UserRole> roles = new HashSet<UserRole>();
roles.set(new UserRole(u.getUsername(), "ADMIN");
userService.update(u);
最后我希望用户有一个角色,但数据库中有两个角色。一个“GENERAL”,userId = null,一个“ADMIN”,具有正确的userId。
知道我需要做什么才能删除第一个角色,而不是将userId设置为null?
需要帮助,谢谢! 抢劫
答案 0 :(得分:2)
如果要在从集合中删除这些角色时从数据库中删除这些角色,则需要使用orphanRemoval = true
(对于JPA 2.0注释)或使用DELETE_ORPHAN
级联选项映射集合(用于XML或3.5版本的Hibernate)。
虽然在这种情况下您无法简单地替换集合,但您需要使用其方法清除现有集合,例如clear()
。
另见: