NonUniqueObjectException при сохранении объединенных таблиц - PullRequest
0 голосов
/ 14 июня 2010

У меня есть две связанные таблицы в отношении многие ко многим: 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]

Может кто-нибудь сказать мне, в чем проблема?что я сделал не так?

1 Ответ

0 голосов
/ 31 марта 2011

У меня была такая же проблема. Удаление cascade = { CascadeType.ALL } решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...