У меня есть две связанные таблицы в отношении многие ко многим: 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);
И роль, и разрешение уже существуют в БД, каждыйего стол.Я хочу добавить запись в таблицу отношений, которая будет указывать как на роль, так и на разрешение:
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]
Может кто-нибудь сказать мне, в чем проблема?что я сделал не так?