保存连接表时出现NonUniqueObjectException

时间:2010-06-14 07:25:13

标签: java forms orm

我有多个关系中的两个相关表:RolePermission。联接表为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]

有人可以告诉我这是什么问题吗?我做错了什么?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。删除cascade = { CascadeType.ALL }解决了问题。