Существует таблица A со следующими столбцами
id bigint NOT NULL,
b_id bigint
CONSTRAINT fk1b51366dc7a1b06c FOREIGN KEY (b_id)
REFERENCES B (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
Теперь у меня есть объект objectB, в котором есть поле, ссылающееся на значение из таблицы A
@OneToOne(fetch = EAGER, cascade = PERSIST, mappedBy = "b")
private A a;
Сначала я пытаюсь удалить из базы данных значение из таблицы A, связанной с объектом B.
if (objectB.getA() != null) {
aRepository.remove(objectB.getA());
}
objectB.setA(null);
и затем удалите объект B
bRepository.remove(objectB);
Ошибка возникает при попытке удалить объект B, поскольку кажется, что Hibernate все еще хочет удалить строку из таблицы A, которая уже была ранее удалена, и я получаю это исключение:
javax.persistence.OptimisticLockException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
Какое решение для этого? Почему Hibernate хочет удалить значение из таблицы A, даже если для ссылки на A из objectB установлено значение null? Если я не удаляю сначала связанное значение из таблицы A, то получаю исключение, что на значение objectB.id все еще ссылаются в таблице A.