- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
有没有人有解决此问题的方法:https://hibernate.atlassian.net/browse/HHH-9663 ?
我也遇到了类似的问题。当我在两个实体之间创建单向(无反向引用)一对一关系并将孤儿移除属性设置为 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);
或者更好的是,在 Parent
实体类中配置 setChild
方法来设置两个关联:
public void setChild(Child child) {
if (child == null) {
if (this.child != null) {
this.child.setParent(null);
}
}
else {
child.setParent(this);
}
this.child = child;
}
关于java - JPA 孤儿删除不适用于 OneToOne 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31470414/
我四处寻找是否有任何合适的方法来处理 CSS3 多列中的寡妇和孤儿,但很失望地发现没有。我自己尝试了 widow 和 orphan 属性,但它们什么也没做。 有人知道使用 CSS3 多列并处理寡妇和孤
从 Blobstore 中删除孤立 blob 的最有效方法是什么? 应用功能和范围: 一个(已登录)用户想要创建一个包含一些常规内容的帖子数据存储区字段(例如姓名、姓氏、评论)和 blob(图像)。
从 Blobstore 中删除孤立 blob 的最有效方法是什么? 应用功能和范围: 一个(已登录)用户想要创建一个包含一些常规内容的帖子数据存储区字段(例如姓名、姓氏、评论)和 blob(图像)。
我可以使用哪种级联类型以及在何处让 Hibernate 在不再有“事物”引用图像时自动删除该图像? (基本上就是 Hibernate 中的垃圾收集) 数据库:事物表-图像表,是多对一的,所以很多事物可
我是一名优秀的程序员,十分优秀!