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);
역할과 권한 모두 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]
누군가가 무엇을 problen 말해 줄래? 내가 뭘 잘못 했니?
addObjectEntryPermissionRole 메서드는 어떤 모양입니까? 역할 또는 권한 개체가 분리되어 있습니까 (다른 최대 절전 모드 세션에서 가져 왔습니까?)? – Thierry
두 코드 조각을 이해할 수 없습니다. 둘 다 부르니? 또한,'addObjectEntryPermissionRole'의 내용은 무엇입니까? –