如何使用 JPA/Hibernate 自动删除 OneToOne 项目?我希望在包含的类中简单地将 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 上设置 Item 时,Container 通过合并持久化,插入一行。
Container container = new Container();
container.setItem(new Item());
container = entityManager.merge(container);
// Row count is 1
但是当该项设置为空,或者设置为另一个项时,旧的对象仍然存在于表中。
container.setItem(null);
container = entityManager.merge(container);
// Row count is STILL 1, leaving orphaned rows.
那么,如何删除这些 OneToOne 孤儿?