Czy ktoś ma obejście tego problemu: https://hibernate.atlassian.net/browse/HHH-9663?Usuwanie plików osieroconych JPA nie działa w przypadku relacji OneToOne
Mam podobny problem. Kiedy utworzyłem jednostronną (bez wstecznego odniesienia) relację jeden do jednego między dwoma obiektami i ustawiono atrybut usuwania osieroconego na true, obiekt referencyjny jest nadal w bazie danych po ustawieniu odniesienia na wartość null.
Oto przykładowy model domeny:
@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;
...
}
Obecnie pracuję obejść poprzez ręczne usuwanie sierot.
Próbowałem to i to działa jak opisano, ale z jakiegoś powodu mój Leniwe ładowanie przestało działać. Spojrzałem na wygenerowane zapytanie i widziałem dwie wybrane rozmowy, które miały miejsce w celu uzyskania rodzica, a inne - w połączeniu z rodzicem. Jakieś pomysły? – ankurvsoni
Dwa zaznaczenia oznaczają, że LAZY działa. Możesz POŁĄCZYĆ FETCH za pomocą zapytania HQL/JPQL. –
Miałem na myśli, gdy robię coś w stylu - Parent result = repository.findOne (parent.getId()). Widzę dwa selekcje. Myślałem tylko wtedy, gdy robię coś takiego: result.getChild() - zobaczyłbym drugi wybór. Czy to nie jest właściwe założenie? – ankurvsoni