首页 > 解决方案 > 错误:表上的 UPDATE 或 DELETE 语句

问题描述

在使用 Spring Boot 和 Spring JPA 的项目中,我有两个实体 FunctionConfiguration 和 InvokeFunctionResult。

@Entity
@Table(name = "function_configuration")
public class FunctionConfigurationEntity {
    @Id
    @Column(name = "id_function_configuration")
    @GeneratedValue(strategy = IDENTITY)
    private Integer idFunctionConfiguration;
}

@Entity
@Table(name = "invoked_function_result")
public class InvokedFunctionResultEntity {
    @Id
    @Column(name = "id_invoked_result_function")
    @GeneratedValue(strategy = IDENTITY)
    private Integer idInvokedResultFunction;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "function_configuration_id", nullable = false, foreignKey = @ForeignKey(name = "function_configuration_fk"), referencedColumnName = "id_function_configuration")
    private FunctionConfigurationEntity functionConfiguration;
}

InvokeFunctionResult 具有 FunctionConfiguration 的 id 外键。如果我尝试使用 InvokeFunctionResult 中存在的 functionConfiguration 的 id 进行删除:

@Transactional
@Modifying
@Query(value = "DELETE FROM FunctionConfigurationEntity fce WHERE fce.idFunctionConfiguration = idFunctionConfiguration")
void deleteByFunctionConfigurationId(@Param("idFunctionConfiguration") Integer functionConfigurationId);

我收到以下错误: 原因:org.postgresql.util.PSQLException:错误:表“function_configuration”上的 UPDATE 或 DELETE 语句违反了表“invoked_function_result”上的外键约束“function_configuration_fk”

我该如何解决?

标签: springjpaforeign-keysdelete-row

解决方案


推荐阅读