当前位置: 首页 > 知识库问答 >
问题:

"org.springframework.dao.数据完整性违反异常:无法执行语句

王修为
2023-03-14

这是列表类

@Entity
@Table(name = "list")
public class List extends AbstractEntity {

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

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

    @Column(name = "date")
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
    private Date date;

    //getters and setters
}

下面是执行类

@Entity
@Table(name = "EXECUTION")
public class Execution extends AbstractEntity {

    @ManyToOne(targetEntity = List.class)
    @JoinColumn(name = "list_id")
    private List list;

    @Column(name = "date")
    @NotNull
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
    private Date date;
}

以下是控制器删除列表的方法

@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void deleteList(@PathVariable("id") Long listId) {
    List list = listRepository.findOne(listId);

    listRepository.delete(listId);
}

当我执行上述代码时,我得到以下错误

: ERROR: update or delete on table "list" violates foreign key constraint "fkmnja1nmiq9v42f0ojydccxf20" on table "execution"

详细信息:键(id)=(1)仍然从表“执行”中引用。

在删除具有特定id的列表表之前,如何删除具有列表id的执行表?

任何帮助都将不胜感激。非常感谢。

共有1个答案

胡墨竹
2023-03-14

定义关系中的级联行为,

@Entity
@Table(name = "EXECUTION")
public class Execution extends AbstractEntity {
    //add cascade , so on delete of list all the execution will also be removed
    @ManyToOne(targetEntity = List.class, cascade = {CascadeType.ALL})
    @JoinColumn(name = "list_id")
    private List list;

    @Column(name = "date")
    @NotNull
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
    private Date date;
}
 类似资料:
  • 在非常简单的表上运行下面的sql语句时,我收到了下面的错误。这里使用的唯一外键是表中的,外键是,它引用了。我不确定为什么我会收到这个错误,因为我试图在删除它们所依赖的样本之前删除所有运行。下面的代码: java代码: String deleteRunsQuery="DELETE FROM运行";//从运行表中删除行String deleteSamplesQuery="DELETE FROM样本";

  • 问题内容: 我试图在我的注释表中插入值,但出现错误。俗话说,我不能添加或更新子行,我也不知道这意味着什么。 我的架构看起来像这样 和我试图做的mysql语句看起来像这样 我得到的错误看起来像这样 SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败(。,CONSTRAINT FOREIGN KEY()引用()删除无操作,更新无操作) 问题答案: 这只是意味着您

  • 实体 此服务已在@Transactional外部服务中调用 当我调试或运行应用程序时,可以更新,但当我想更新时,它会在PK上抛出以更新实体。有什么建议吗?我原以为它有的功能,但我写的与相同。 外部服务是SyncLegacyAccountServiceImpl 日志 我知道这个场景中的违规例外是什么。但这很奇怪,因为,实体以同样的方式正确更新。但是当它想要更新CustomerPerson时,它抛出这

  • 照明\database\queryexception SQLSTATE[23000]:完整性约束违反:19 NOT NULL约束失败:users.password(SQL:插入“users”(“name”、“email”、“username”、“updated_at”、“created_at”)值(MADHUP KUMAR,Chandrashivam99@gmail.com,Vansh123,20

  • 我刚接触laravel,尝试存储数据,但不断出现以下错误: 在控制器中的存储方法: 店铺请求: 数据库: 错误指向控制器: 但不确定怎么解决。请帮忙。提前谢谢。

  • 问题内容: 我正在尝试使用ALTER IGNORE TABLE + UNIQUE KEY从MySQL表中删除重复项。MySQL文档说: IGNORE是标准SQL的MySQL扩展。如果新表中的唯一键上有重复项,或者在启用严格模式时出现警告,则它控制ALTER TABLE的工作方式。如果未指定IGNORE,则在发生重复键错误时,副本将中止并回滚。如果指定了IGNORE,则只有第一行用于唯一键重复的行。