Java Spring jpa can';无法删除实体,因为表中有fk

Java Spring jpa can';无法删除实体,因为表中有fk,java,sql,spring,spring-data-jpa,Java,Sql,Spring,Spring Data Jpa,我尝试删除一个组,但失败,因为某个孩子已将fk添加到该组。该组没有任何fk到子级。我可以通过查找该组中所有具有fk的子级并将该组设置为null然后保存来完成此操作,但这看起来很粗糙,而且肯定有更好的选择。如何才能以良好的方式删除该fk?如果要在父级设置空值,可以在字段中使用级联注释。您可以在等级库中找到更多详细信息: 另一种情况是,如果要删除相关实体,也可以尝试删除相关字段上带有注释的属性。引用JPA 2.0规范中的相关部分: 指定为OneToOne或OneToMany的关联支持使用孤立删除选项

我尝试删除一个组,但失败,因为某个孩子已将fk添加到该组。该组没有任何fk到子级。我可以通过查找该组中所有具有fk的子级并将该组设置为null然后保存来完成此操作,但这看起来很粗糙,而且肯定有更好的选择。如何才能以良好的方式删除该fk?

如果要在父级设置空值,可以在字段中使用级联注释。您可以在等级库中找到更多详细信息:

另一种情况是,如果要删除相关实体,也可以尝试删除相关字段上带有注释的属性。引用JPA 2.0规范中的相关部分:

指定为OneToOne或OneToMany的关联支持使用孤立删除选项。当删除生效时,以下行为适用:

如果从关系中删除了作为关系目标的实体(通过将关系设置为null或从关系集合中删除实体),则删除操作将应用于孤立的实体。清除操作在冲洗操作时应用。孤儿删除功能适用于其父实体私人“拥有”的实体。否则,可移植应用程序不能依赖于特定的删除顺序,也不能将孤立的实体重新分配给另一个关系,也不能试图将其持久化。如果孤立的实体是分离的、新的或删除的实体,则孤立删除的语义不适用

如果删除操作应用于托管源实体,则删除操作将根据第3.2.3节的规则级联到关系目标(因此无需为关系指定级联=删除)


孤立删除规范:

您可以共享您的SQL吗?
@Entity
@Getter
@Setter
@Table(name = "children")
public class Child extends BaseEntity {

    @Column(name = "firstName")
    private String firstName;

    @Column(name = "lastName")
    private String lastName;

    @OneToOne
    @JoinColumn(name = "group_id", referencedColumnName = "id")
    private Group group;

    @Column(name = "medical_info")
    private String medicalInfo;

    @Column(name = "birth_date")
    @Temporal(TemporalType.DATE)
    private Date birthDate;

    @Column(name = "starting_date")
    @Temporal(TemporalType.DATE)
    private Date startingDate;

    @Column(name = "native_language")
    private String nativeLanguage;

    @Column(name = "second_language")
    private String secondLanguage;

    private String picture;
}