У кого-нибудь есть обходной путь для этой проблемы: https://hibernate.atlassian.net/browse/HHH-9663?JPA удаление сирот не работает для отношений OneToOne
У меня также есть аналогичная проблема. Когда я создал одностороннюю (без обратной ссылки) отношения один к одному между двумя объектами и установил атрибут удаления сироты в значение true, ссылочный объект все еще находится в базе данных после установки ссылки на нуль.
Вот пример модель предметной области:
@Entity
public class Parent {
...
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "child_id")
private Child child;
...
}
@Entity
public class Child {
...
@Lob
private byte[] data;
...
}
Сейчас я работаю вокруг этого вручную удаления сирот.
Я попробовал это, и она работает, как вы описали, но по какой-то причине моего ленивая загрузка перестала работать. Я посмотрел на сгенерированный запрос, и я вижу два вызова выбора, которые происходят один для получения родительского и другого для дочернего элемента и родителя. Есть идеи? – ankurvsoni
Два выбора означает, что LAZY работает. Вы можете подключиться к FETCH с помощью запроса HQL/JPQL. –
Я имел в виду, когда я делаю что-то вроде: Parent result = repository.findOne (parent.getId()). Я вижу два выбора. Я думал только тогда, когда я делаю что-то вроде: result.getChild() - я бы увидел второй выбор. Разве это не правильное предположение? – ankurvsoni