JPA Spring 数据级联删除与组合的多对多关系



我缺少有关 JPA 级联删除的内容 - 我真的很感激这里的指针。

我有一个模型,针对这个问题进行了简化,分为三种类型:

  • 拥有一切的用户
  • 用户可以拥有多个组
  • 用户可以有许多主题
  • 一个主题可以添加到多个组。

  • 如果删除用户,则会删除所有组和主题

  • 如果组被删除,主题将从组中删除,但不会删除
  • 如果删除主题,则会将其从组和用户中删除,但用户和组仍保留

所以我只是根据 spring 数据文档尝试不同的级联,没有得到我描述的结果。 我的级联错误 - 目前,如果我删除一个主题,组和用户将被删除,因此索引是双向的,这不是我想要的。

用户:

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "owner")
private Set<Topic> topics;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "owner")
private Set<Group> groups;

群:

@ManyToMany(cascade = {CascadeType.PERSIST})
private Set<Topic> topics;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="user_id")
@OneToOne(mappedBy = "owner", cascade = CascadeType.ALL)
private User owner;

主题

@ManyToMany(mappedBy = "topics")
private Set<EntityGroup> groups;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="user_id")
@OneToOne(mappedBy = "owner", cascade = CascadeType.ALL)
private User owner;

我缺少的事情,现在看起来很明显,就是不在子对象上包含级联值。在这样做的过程中,我告诉 JPA 将级联删除到父级。

最新更新