2017-08-05 149 views
0

我错过了有关JPA级联删除的内容 - 我真的很感激这里的指针。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; 

回答

0

事情我失踪了,现在似乎很明显,是不是包括级联值孩子的对象。在这样做的时候,我告诉JPA将级联删除到父级。