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

Hibernate ManyToMany delete/remove实体无法删除或更新父行:外键约束失败

陆弘光
2023-03-14

我在两个实体之间有很多关系。

作者-

代码如下:

@Entity
public class Author

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "author_id")
private Long author_id;

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "Author_Books", joinColumns = @JoinColumn(name = "author_id"), inverseJoinColumns = @JoinColumn(name = "book_id"))
private List<Books> books;


@Entity
@Table(name = "Books")
public class Books

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "book_id")
private Long book_id;

@ManyToMany(mappedBy = "books")
@NotNull
private List<Author> authors;

现在,当我尝试执行以下操作时,我得到以下错误:

书刀。删除(书籍);\n错误:无法删除或更新父行:外键约束失败(lucytestauthor\u books,约束FK\u d7blldnja6fa73ktxehccduq外键(book\u id)引用bookbook\u id

我搜索了整个网络,堆栈溢出,但似乎找不到答案。任何人如有此问题,也将不胜感激。

共有1个答案

姚俊贤
2023-03-14

我删除了MySQL中的所有表,这次让hibernate用以下代码从头开始创建它们,从而实现了这一点:

@ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "Author_Books", joinColumns = @JoinColumn(name = "author_id"), inverseJoinColumns = @JoinColumn(name = "book_id"))
    @Valid
    private List<Books> books;

@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.DETACH})
    @JoinTable(name = "Author_Books", joinColumns = @JoinColumn(name = "book_id"), inverseJoinColumns = @JoinColumn(name = "author_id"))
    @Valid
    private List<Author> authors;

我希望这能让每个人都免受它给我带来的头痛。

 类似资料:
  • 问题内容: 进行时: 错误: 这是我的桌子: 问题答案: 照原样,必须先删除Advertisers表中的行,然后才能删除它引用的Jobs表中的行。这个: …实际上与应有的相反。实际上,这意味着您必须在作业表中有一条记录,然后才是广告商。因此,您需要使用: 纠正外键关系后,您的delete语句将起作用。

  • 我还在学习hibernate中的很多东西,以及如何处理hibernate中表与表之间的关系,所以在我的一个项目中,我面临着以下问题: 问题出在哪里? 我想做什么? 我正在尝试删除package实体,但不删除package表中引用的用户 我正在通过packageDAO对package实体调用delete

  • 我将按id删除对象,但出现如下错误: com。mysql。jdbc。例外情况。jdbc4。MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败(,constraint外键()引用) 我按id删除的方法是: 我的表的映射看起来像: Selection.java 作业Audit.java 审核组。JAVA AssignmentAudit

  • 我在这里使用了多对一双向关系,一旦我被放入数据库,我就不能删除文件,如果我试图删除,我会遇到异常,无法删除或更新父行:外键约束失败。 这是我的另一个实体类... 嗨这是我的完整栈迹

  • 问题内容: 我正在研究一个基本示例来测试操作,但出现异常。 我有以下实体: Employee.java EmpDetails.java 现在我在数据库中有员工ID为10的记录,在员工详细信息表中有相应的记录。 现在,当我在查询下面运行时: 我在想hibernate将删除员工记录和相应的员工详细信息记录,因为我已设置要删除的层叠类型。但我得到异常为: 引起原因:com.mysql.jdbc.exce

  • 现在,当我运行命令php artisan migrate时出现问题,它成功地迁移了我的所有表,但当我运行rollback命令时,它会抛出错误,错误是出于我的目的 我的专业移民: 即使我使用onDelete(“cascade”),我也不知道问题出在哪里。我们将非常感谢您的帮助!