Hibernate如何删除集合中的对象?

时间:2011-01-31 17:07:47

标签: hibernate

我有一个对象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?

需要帮助,谢谢! 抢劫

1 个答案:

答案 0 :(得分:2)

如果要在从集合中删除这些角色时从数据库中删除这些角色,则需要使用orphanRemoval = true(对于JPA 2.0注释)或使用DELETE_ORPHAN级联选项映射集合(用于XML或3.5版本的Hibernate)。

虽然在这种情况下您无法简单地替换集合,但您需要使用其方法清除现有集合,例如clear()

另见: