0
我有兩個相關的表在多對多關係:Role
和Permission
。連接表是RolePermission
。NonUniqueObjectException保存連接表
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);
無論是角色和權限在數據庫中已經存在,每一個在其表。我想將記錄添加到關係表,將在角色和權限都指向:
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]
有人可以告訴我什麼是問題?我做錯了什麼?
什麼addObjectEntryPermissionRole方法看起來像? Role或Permission對象是否被分離(你是否在另一個hibernate會話中獲得它們?)? – Thierry 2010-06-14 09:42:03
我不明白這兩個代碼片段。你打電話給他們兩個嗎?另外,addObjectEntryPermissionRole的內容是什麼? – 2010-06-14 18:08:21