Дочерний объект не удален - PullRequest
0 голосов
/ 26 октября 2018

У меня проблема с каскадным удалением дочернего объекта.Я использую EclipseLink.Отображение отношений «один-к-одному», когда первичный ключ в родительской таблице также является первичным ключом в дочерней таблице.

 class Parent {
    @Column(name = "PARENT_ID", unique = true, nullable = false)
    private Long id;

    @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "parent")
    private Child child;

}

class Child {
    @Id
    @JoinColumn(name = "PARENT_ID", unique = true)
    private Parent childId;
}

Когда я пытаюсь "УДАЛИТЬ ИЗ ПЕРЕНОСА родительского, ГДЕ parent.id in: parentIds", я получаю информацию о том, что дочерний объект был найден.Не могли бы вы дать мне совет, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Массовые обновления и удаления JPQL не загружают объект в память, поэтому вы сами отвечаете за удаление или исправление любых ссылок.В этом случае вам нужно выполнить массовое удаление, чтобы очистить детей, прежде чем вы сможете удалить родителей.

0 голосов
/ 26 октября 2018

Эта проблема обычно возникает при отображении типа OneToOne из-за ограничения внешнего ключа от родителя к потомку, поскольку дочерний объект будет указывать на несуществующий объект.Сначала вы должны избавиться от ссылок, найдя сущность и ее отображение, установив нулевые ссылки, а затем вы можете объединить / сохранить / удалить ее.

Аналогичный вопрос задается здесь, обратитесь за помощьюотсюда: Удаление потерянных JPA не работает для отношений OneToOne

...