Hibernate双向或两个单向关系

时间:2014-05-28 10:48:26

标签: mysql sql hibernate

我有两个实体用户和组,与多对多

相关联

用户属于许多群组并且他们知道(navigabilite_1)
一个组包含许多用户,他知道它们(navigabilite_2)

我想在删除仅用户的用户时,关系(在连接表中)被删除而不是组,删除组的相同内容不应仅影响用户组和关系

我应该使用双向或两个单向的哪种关联,我应该在哪里删除级联?

1 个答案:

答案 0 :(得分:1)

您应该使用双向关联,并且不应使用任何级联,因为级联也会删除关联另一侧的实体。

假设User.groups是关联的所有者方,则使用

删除组
for (User user : group.getUsers()) {
    user.getGroups().remove(group);
}

// optional:
group.getUsers().clear();

session.delete(group);

删除用户将使用

完成
// optional:
for (Group group : user.getGroups()) {
    group.getUsers().remove(user);
}

user.getGroups().clear();

session.delete(user);