Как получить элемент OneToOne для автоматического удаления с помощью JPA / Hibernate? Я ожидаю, что простая установка элемента OneToOne в значение null в классе, который содержит, достаточно умна, чтобы позволить Hibernate удалить его.
Учитывая простой объект, упрощенный:
@Entity
public class Container {
private Item item;
@OneToOne(cascade=CascadeType.ALL)
public Item getItem() { return item; }
public void setItem(Item newItem) { item = newItem; }
}
Когда элемент установлен в контейнере, контейнер сохраняется со слиянием и вставляется строка.
Container container = new Container();
container.setItem(new Item());
container = entityManager.merge(container);
// Row count is 1
Но если для элемента задано значение NULL или для другого элемента, старый объект все еще существует в таблице.
container.setItem(null);
container = entityManager.merge(container);
// Row count is STILL 1, leaving orphaned rows.
Итак, как мне удалить этих сирот OneToOne?