Hibernate, как удалить объекты в наборе? - PullRequest
0 голосов
/ 31 января 2011

У меня есть объект User (имеет идентификатор, имя пользователя, пароль), который имеет набор UserRoles (имеет идентификатор, имя пользователя, роль пользователя).

Как все отображается, таблица UserRole выглядит следующим образом:

USER_ROLE
id
username
userrole
userid

Когда пользователь получает более высокую роль, скажем, от «общего» до «администратора», замените набор ролей новым набором ролей, например:

User u = userService.findById(userId);
Set<UserRole> roles = new HashSet<UserRole>();
roles.set(new UserRole(u.getUsername(), "ADMIN");
userService.update(u);

В конце я хочу, чтобы для пользователя была одна роль, но в базе данных есть две. Один "ОБЩИЙ" с userId = null и один "ADMIN" с правильным userId.

Есть идеи, что мне нужно сделать, чтобы первая роль удалялась вместо того, чтобы для userId было установлено значение null?

Нужна помощь, спасибо! грабят

1 Ответ

2 голосов
/ 31 января 2011

Если вы хотите, чтобы эти роли были удалены из базы данных при их удалении из коллекции, необходимо сопоставить коллекцию с orphanRemoval = true (для аннотаций JPA 2.0) или с DELETE_ORPHAN опцией каскадирования (для XML или предварительно -3,5 версии Hibernate).

Хотя в этом случае вы не можете просто заменить коллекцию, вам нужно очистить существующую коллекцию ее методами, такими как clear().

Смотри также:

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