【问题标题】:Spring JPA ManyToOne deletion handleSpring JPA ManyToOne 删除句柄
【发布时间】:2020-11-08 03:42:05
【问题描述】:

我有两个 POJO,一个用于 Post,它在下面

@Entity
public class Post {
    ...
    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "category_id")
    private Category category;
    ...
}

另一个是分类如下

@Entity(name = "category")
public class Category {
    ...
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "category", cascade = CascadeType.ALL)
    @JsonIgnore
    private List<Post> post;
    ...
}

每个类都有两个 crud 存储库。这是我的问题。 GET, POST, PUT 正在按预期工作。但是对于DELETE,它正在制造问题。假设 POST A 具有类别类型 C。当我尝试删除 POST A 时,它不仅删除了 POST A 本身也会删除 C 类 以及与 C 类 相关的所有帖子>.

请帮忙:)

【问题讨论】:

  • 在使用通常在某处看到的注释或代码时请更加小心。确保您首先了解您使用的内容。这个问题可能会对您有所帮助:stackoverflow.com/questions/13027214/…
  • 谢谢@EiriniGraonidou。会记住这一点。你分享的链接真的很有帮助:)

标签: java postgresql spring-boot hibernate spring-data-jpa


【解决方案1】:

问题出在Post 一侧的CascadeTypeCascadeType.ALL 包含CascadeType.REMOVE,因此当您删除帖子时,该帖子所属的类别也将被删除。仅在Category 一侧保留CascadeType.ALL,并将其从Post 中删除。

【讨论】:

  • @SayantanBanerjee 当您发现任何有用的解决方案时,请尝试投票。
猜你喜欢
  • 1970-01-01
  • 2012-12-20
  • 2017-10-23
  • 2018-09-04
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多