我遗漏了有关JPA级联删除的内容 - 我真的很感激这里的指针。
我有一个简化这个问题的模型,有三种类型:
主题可以添加到许多组中。
如果删除了用户,则会删除所有组和主题
所以我只是按照弹簧数据文档尝试不同的Cascade,而不是得到我正在描述的结果。我的Cascades错了 - 目前如果我删除一个主题,组和用户被删除,所以索引是双向的,这不是我想要的。
用户:
@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;
答案 0 :(得分:0)
我遗失的东西,现在看来很明显,就是不在子对象上包含级联值。在这样做时,我告诉JPA级联删除到父级。