首页 > 解决方案 > Jpa 存储库未从数据库中删除

问题描述

所以,我有这个实体

@Entity
@Table(name = "VISITOR_IMAGE")
public class VisitorImage implements Serializable {

    @Id
    @Column(name = "VISITOR_ID")
    private Long visitorId;

    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
    @PrimaryKeyJoinColumn(name = "VISITOR_ID", referencedColumnName = "ID")
    private Visitor visitor;

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

    @Column(name = "DATA")
    private byte[] data;

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

    @Column(name = "SIZE")
    private Long size;

    //getters and setters

}

在这里我有 jpa 存储库:

@Repository
public interface VisitorImageRepository extends JpaRepository<VisitorImage, Long> {}

所以当我在服务中调用删除时,没有错误或任何东西,但它没有被删除

@Override
    public void deleteByVisitorId(Long visitorId) {
        visitorImageRepository.delete(visitorId);
}

我不知道为什么它没有被删除......表的主键是“VISITOR_ID”

我要补充一点,保存效果很好。

有什么帮助吗?

标签: javaspring-bootjpaspring-data-jparepository

解决方案


您已将 vistor 映射为一对一,并将级联选项映射为持久,即“cascade=CascadeType.PERSIST”它阻止您删除。要删除,您需要将级联选项设置为 Cascade.All 或 Cascade.Remove


推荐阅读