休眠:删除与联接表的多对多关联

时间:2018-11-22 06:34:33

标签: java hibernate hibernate-mapping hibernate-criteria

我有两个具有多对多关联的表。

数据库详细信息: 用户->列[Id,Name]

角色->列[Id,Name]

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中的相应记录,但同时也删除了使用以下代码不需要的Roles记录。

session.delete(user);

即使我在角色中没有任何用户,我也希望角色在那儿,只删除User和UserRoles表中的记录。我将如何用XML做到这一点。

1 个答案:

答案 0 :(得分:0)

这是因为Load balancer type: classic包含REMOVE。根据您的实际需要更换它。有关详细信息,请参见this