当在JPA / Hibernate(Spring启动应用程序)中与@OnetoMany实体不存在时,从数据库中删除子记录

问题描述 投票:0回答:1

我正在使用JPA / Hibernate开发Spring Boot Web应用程序。该应用程序以JSON格式接收数据记录,这些记录被映射到@Entity类。布局非常简单,它具有一个带有一组子实体的主实体类。我通过@ OneToMany / @ ManytoOne映射它们。使用JpaRepository的默认存储库功能,可以解析,从DB读取数据,在DB中插入/更新数据都可以正常工作。...

事实是,当我收到需要更新的记录时,我只想存储请求所附带的那些子记录。如果还有其他子记录,这些子记录存储在较早的父记录中,并且不在请求的当前记录中,则它们具有从数据库中删除。

我的想法是通过将子记录集与从数据库接收的子记录集进行比较,将那些不存在的子记录放入列表中并删除它们,然后保留该实体。另一个选择是首先删除所有子记录,然后保留新实体。...

我现在的问题是:没有使用JPA / Hibernate实现这一目标的更优雅的方法。一些注释或选项或其他内容。我还没有找到适合我的方法。你有什么想法?

更新:我的问题是不删除父实体,然后删除升序的子记录。父实体保持原样(或得到更新...)。我只想删除子记录,并且只删除那些不在当前请求实体中但在数据库中的子记录。

感谢和问候。

hibernate spring-boot jpa one-to-many many-to-one
1个回答
0
投票

我认为这是您要使用的级联。例如。 Cascase.REMOVE将自动删除所有没有被引用的子实体。

您可以这样使用它:

@OneToMany(cascade = CascadeType.REMOVE)

可以在这里找到很好的概述:https://www.baeldung.com/jpa-cascade-types

© www.soinside.com 2019 - 2024. All rights reserved.