Hibernate: удаление связи «многие ко многим» с таблицей соединений - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть две таблицы с ассоциацией «многие ко многим».

Сведения о БД: Пользователь -> Столбцы [Id, Имя]

Role -> Столбцы [Id, Имя]

UserRoles -> Столбцы [UserId, RoleId]

Подробности отображения в спящем режиме:

/* User.hbm.xml */
<set name="Roles" table="UserRoles" inverse="true" cascade="all" lazy="false">
    <key column="UserId" />
    <many-to-many column="RoleId" class="Role" />
</set>
…
/* Rols.hbm.xml */
<join table="UserRoles">
    <key column="RoleId" />
    <many-to-one column="UserId" name="user"/>
</join>

Когда я пытаюсь удалить пользователя, он удаляет соответствующие записи в user и UserRoles, но также удаляет записи ролей, что не требуется с помощью приведенного ниже кода.

session.delete(user);

Даже еслиУ меня нет пользователя в роли, я хочу, чтобы роль была там, просто удалите только записи из таблиц User и UserRoles. Как мне добиться этого в XML.

1 Ответ

0 голосов
/ 22 ноября 2018

Это из-за cascade="all", который включает УДАЛЕНИЕ.Замените его в соответствии с тем, что вам действительно нужно.Подробнее см. .

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