java - 删除 OneToMany 关系中的父级后为 "Cannot delete or update a parent row"

标签 java mysql hibernate

我收到错误

Cannot delete or update a parent row: a foreign key constraint fails (`gestion_ejercicios_programacion`.`examen`, CONSTRAINT `examen_ibfk_1` FOREIGN KEY (`titulacionID`) REFERENCES `titulacion` (`id`))

当尝试使用 hibernate 删除实体时。这是我在 main 中尝试做的事情:

TitulacionDAO tDAO = context.getBean(TitulacionDAO.class);
Titulacion t1 = new Titulacion("titulacion 1");
tDAO.save(t1);

ExamenDAO exDAO = context.getBean(ExamenDAO.class);
Examen ex1 = new Examen(3, 11, "examen 1", t1);
exDAO.save(ex1);

tDAO.delete(t1);

这是我的 Titulacion 的考试映射

@ManyToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name="titulacionID", referencedColumnName="id")
private Titulacion titulacion;

这是我的 Examen 标题映射

@OneToMany(cascade=CascadeType.REMOVE, mappedBy="titulacion", orphanRemoval=true)
private Set<Examen> examenes = new HashSet<>();

这是我的数据库:

CREATE TABLE examen (

    id INT AUTO_INCREMENT PRIMARY KEY,
    mes INT(2),
    ano INT(4),
    descripcion VARCHAR(1000),
    titulacionID INT,

    FOREIGN KEY (titulacionID) REFERENCES titulacion(id)

);

CREATE TABLE titulacion (

    id INT AUTO_INCREMENT PRIMARY KEY PRIMARY KEY,
    nombre VARCHAR(100)

);

我不知道为什么会发生这种情况,我已经阅读了有关该主题的几篇文章,并且从我所读到的内容来看,这应该可行。感谢您的帮助

最佳答案

您没有将考试添加到标题中。因此,当删除标题时,Hibernate 并不知道考试也需要删除

关于java - 删除 OneToMany 关系中的父级后为 "Cannot delete or update a parent row",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55551604/

相关文章:

mysql - 何时 CREATE TABLE AS SELECT 与 CREATE TABLE LIKE?

mysql - 随机化 MySQL 表中的所有密码

java - 我可以简化 Hibernate 注释吗?

c# - 从 Visual Studio 连接到 sql 数据库时出错

java - 如果我的应用程序需要大量连接查询,我应该使用 ORM

java - Hibernate Map ID 自动从字段中获取

java正则表达式找到两个 '%d'不起作用

java - 将 char 添加到 int 而不会出现不兼容错误

java - Execute with Ant 适用于绝对路径但不适用于相对路径

java - 为 Servlet 设置 JSP 位置