«Невозможно удалить или обновить родительскую строку» после удаления родителя в отношении OneToMany - PullRequest
0 голосов
/ 06 апреля 2019

я получаю ошибку

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`))

при попытке удалить объект с помощью спящего режима. Вот что я пытаюсь сделать в своей основной статье:

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);

Вот карта Examen для моего Titulacion

@ManyToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name="titulacionID", referencedColumnName="id")
private Titulacion 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)

);

Я понятия не имею, почему это происходит, я прочитал несколько постов на эту тему и из того, что я прочитал, это должно работать. Спасибо за помощь

1 Ответ

1 голос
/ 06 апреля 2019

Вы не добавили образец в Titulacion. Таким образом, при удалении титулации Hibernate не знает, что нужно удалить и эксамен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...