我有多个关系中的两个相关表:Role
和Permission
。联接表为RolePermission
。
Role
对象有一个权限列表。它看起来像这样:
private Set<Permission> Permissions;
@ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.ALL })
@JoinTable(name = "permission_role", joinColumns = @JoinColumn(name = "role_id"),
inverseJoinColumns = @JoinColumn(name = "permission_id"))
public Set<ObjectPermission> getObjectPermissions() {
return objectPermissions;
}
在某段时间内,我想为角色添加权限:
role.getObjectPermissions().add(permission);
roleDAO.saveOrUpdate(role);
角色和权限都已存在于db中,每个都在其表中。我想在关系表中添加一条记录,它将指向角色和权限:
role.addObjectEntryPermissionRole(permission);
roleDAO.saveOrUpdate(role);
问题是看起来它正试图保存权限本身!然后它抛出了这个错误:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.XXX.model.Permission#11]
有人可以告诉我这是什么问题吗?我做错了什么?
答案 0 :(得分:0)
我遇到了同样的问题。删除cascade = { CascadeType.ALL }
解决了问题。