首页 > 解决方案 > Spring 数据存储库不检查标记为在主实体下级联的类上的 isNew(entity)

问题描述

我有一个父类(为了便于理解和在当地人身上运行,我简化了类结构)

@Entity
@Table(name = "entity_a")
public class EntityA implements Serializable, Persistable<Integer> {

    @Id
    @Column(name = "id")
    private Integer id;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "entity_b_id")
    private EntityB entityB;

    /* Getter and Setter */

    @Override
    public boolean isNew() {
        return isNew;
    }
}

@Entity
@Table(name = "entity_b")
public class EntityB implements Serializable, Persistable<String> {

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

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

    @OneToOne(mappedBy = "entityB")
    private EntityA entityA;

    /* Getters and Setters */

    @Override
    public boolean isNew() {
        return isNew;
    }

}

当我尝试使用以下 spring 数据存储库持久化新实体 EntityA 时:

public interface EntityARepository extends JpaRepository<EntityA, Integer> {
}

它只检查isNewonEntityA但忽略isNewonEntityB并且我primary key constraint在持续操作中不断收到错误

我实现Persistable接口的原因是因为 EntityB 实际上可以重复很多次所以我想检查它的存在并isNew在保存之前相应地设置布尔值

如何让 spring 存储库考虑isNew子类的属性以及标记为级联的属性

标签: javaspringjpaspring-data-jpa

解决方案


推荐阅读