Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA Spring数据级联删除与组合的多对多关系_Java_Spring_Hibernate_Jpa - Fatal编程技术网

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

Java JPA Spring数据级联删除与组合的多对多关系,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我遗漏了一些关于JPA级联删除的信息——我非常希望这里有一个指针 我有一个模型,针对这个问题进行了简化,分为三种类型a: 拥有一切的用户 用户可以有许多组 用户可以有许多主题 一个主题可以添加到多个组中 如果删除用户,则删除所有组和主题 如果删除了组,则会从组中删除主题,但不会删除 如果删除了某个主题,则该主题将从组和用户中删除,但用户和组将保留 因此,我只是尝试根据spring数据文档进行不同的级联,而没有得到我描述的结果。我的级联错误-目前,如果我删除一个主题,组和用户将被删除,因此索引

我遗漏了一些关于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;