有没有人有解决此问题的方法: https://hibernate.atlassian.net/browse/HHH-9663?
我也面临着类似的问题。当我在两个实体之间创建单向(无反向引用)一对一关系并将orphan remove属性设置为true时,在将引用设置为null后,引用的对象仍在数据库中。
以下是示例域模型:
@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;
...
}
我目前正在通过手动删除孤儿来解决这个问题。
级联 只是有道理 实体状态转换 从一个传播的 亲 到了 儿童。在您的情况下,父母实际上是这个协会的孩子(拥有FK)。
请尝试使用此映射:
@Entity
public class Parent {
...
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "parent")
private Child child;
...
}
@Entity
public class Child {
@OneToOne
@JoinColumn(name = "parent_id")
private Parent parent;
...
@Lob
private byte[] data;
...
}
要级联孤儿删除,您现在需要:
Parent parent = ...;
parent.getChild().setParent(null);
parent.setChild(null);
级联 只是有道理 实体状态转换 从一个传播的 亲 到了 儿童。在您的情况下,父母实际上是这个协会的孩子(拥有FK)。
请尝试使用此映射:
@Entity
public class Parent {
...
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "parent")
private Child child;
...
}
@Entity
public class Child {
@OneToOne
@JoinColumn(name = "parent_id")
private Parent parent;
...
@Lob
private byte[] data;
...
}
要级联孤儿删除,您现在需要:
Parent parent = ...;
parent.getChild().setParent(null);
parent.setChild(null);