首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Data JPA仅在父实体为惰性获取时删除子实体

Spring Data JPA仅在父实体为惰性获取时删除子实体
EN

Stack Overflow用户
提问于 2020-12-08 05:47:28
回答 1查看 30关注 0票数 1

我有一个user类,它有一个字段:

代码语言:javascript
复制
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JsonManagedReference
private Set<FavoriteProduct> favoriteProducts = new HashSet<>();

最喜欢的产品类包含该字段:

代码语言:javascript
复制
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "users_id", nullable = false)
@JsonBackReference
private User user;

当我尝试通过扩展JpaRepository的收藏产品存储库来删除收藏产品时,这并不成功。

但是,当我将EAGER fetch更改为LAZY fetch时,它可以工作,如下所示:

代码语言:javascript
复制
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "users_id", nullable = false)
@JsonBackReference
private User user;

这可能是什么原因呢?

EN

回答 1

Stack Overflow用户

发布于 2020-12-08 07:16:02

如果子对象是从父对象引用的,则

  • Hibernate不会删除子对象。

对于

  • FetchType.EAGER,您也在初始化与父级的关联。

对于使用FetchType.LAZY

  • ,除非您尝试在持久性上下文中访问用户,否则将不会加载user关联。

  • 您可以先尝试访问user,然后再删除。即使使用FetchType.LAZY

,它也应该模拟类似的行为

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65189920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档