Spring 启动 JPA。删除 oneToMany 关系中的实体

Spring Boot JPA. Removing entity in oneToMany relationships

这是我的实体

package com.nimesia.sweetvillas.entities;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.List;

@Entity
@Table(name = "specs", schema = "crm")
public class SpecEntity extends AbsEntity {

    @Id
    @Column(name = "spec_id")
    private @Getter @Setter String id;

    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(
            name = "specs_translations",
            schema="crm",
            joinColumns = @JoinColumn(name = "spec_id"),
            inverseJoinColumns = @JoinColumn(name = "translation_id")
    )
    private @Getter @Setter
    List<TextEntity> texts;

}

如您所见,与 TextEntity 之间存在一对多关系。这种关系是通过specs_translationstable.

产生的

问题来了

在创建 specEntity 时,我还可以创建它的子实体(在本例中为翻译)。在数据库中,将创建 specs_translations 中的引用和翻译中的记录(table,其中包含 textEntities 的记录)。应该的。

但是当涉及到从我的 SpecEntity 中更新和删除 TextEntity 时,虽然 specs_translations 中的引用被删除,但相关的翻译记录仍然存在。 这导致了如下图所示的情况

当我在 specs_translations 中删除它的引用时,如何删除翻译中的记录?我想通过 JPA 而不是通过 DB 来实现。

我解决了。我只是将 orphanRemoval 设置为“true”。