Java JPA Spring数据级联删除与组合的多对多关系
我遗漏了一些关于JPA级联删除的信息——我非常希望这里有一个指针 我有一个模型,针对这个问题进行了简化,分为三种类型a:Java JPA Spring数据级联删除与组合的多对多关系,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我遗漏了一些关于JPA级联删除的信息——我非常希望这里有一个指针 我有一个模型,针对这个问题进行了简化,分为三种类型a: 拥有一切的用户 用户可以有许多组 用户可以有许多主题 一个主题可以添加到多个组中 如果删除用户,则删除所有组和主题 如果删除了组,则会从组中删除主题,但不会删除 如果删除了某个主题,则该主题将从组和用户中删除,但用户和组将保留 因此,我只是尝试根据spring数据文档进行不同的级联,而没有得到我描述的结果。我的级联错误-目前,如果我删除一个主题,组和用户将被删除,因此索引
- 拥有一切的用户
- 用户可以有许多组
- 用户可以有许多主题
- 一个主题可以添加到多个组中
- 如果删除用户,则删除所有组和主题
- 如果删除了组,则会从组中删除主题,但不会删除
- 如果删除了某个主题,则该主题将从组和用户中删除,但用户和组将保留
@OneToMany(cascade=CascadeType.ALL,orphandremovation=true,mappedBy=“owner”)
私人设置的主题;
@OneToMany(cascade=CascadeType.ALL,orphanRemoving=true,mappedBy=“owner”)
私有集合组;
组:
@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(cascade={CascadeType.PERSIST})
私人设置的主题;
@多通(级联=级联类型.ALL)
@JoinColumn(name=“user\u id”)
@OneTONE(mappedBy=“owner”,cascade=CascadeType.ALL)
私人用户所有者;
话题
@ManyToMany(mappedBy=“topics”)
私有集合组;
@多通(级联=级联类型.ALL)
@JoinColumn(name=“user\u id”)
@OneTONE(mappedBy=“owner”,cascade=CascadeType.ALL)
私人用户所有者;
我缺少的是在子对象上不包含级联值,这一点现在看来很明显。在这样做时,我告诉JPA将删除的内容级联到父级
@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;