首页 > 解决方案 > 如何在不删除子实体的情况下删除父实体?

问题描述

我有两个实体。

@Entity
class Parent(){
    @Id
    private UUID id;
    
    private String someValue;
    
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "child_id", referencedColumnName = "id")
    private Child child;
}

@Entity
class Child(){
    @Id
    private UUID id;
    
    private String someVariable;
    
    private Integer someValue;
}

当我删除父实体时 - 子实体会自动删除。如何在不删除孩子的情况下删除父母?

标签: javaspring-boothibernatespring-mvcspring-data-jpa

解决方案


有很多CascadeType(PERSIST,MERGE,REMOVE,REFRESH,...)。注释行@OneToOne(cascade = CascadeType.ALL)假设您正在组合所有 cascadeType。删除时将CascadeType.REMOVE删除当前行的所有相关子项。为避免这种情况,只需将您的级联类型更改为以下@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.REFRESH})


推荐阅读