java - 实体更新导致错误:拥有实体不再引用 cascade="all-delete-orphan"
问题描述
我有以下表格实体,因为我正在尝试更新现有记录,但这样做时出现以下错误。我知道我在实体定义中犯了一些错误,但无法弄清楚。感谢你的帮助。
**A
-------------------
| |
B C
---------
| |
D E**
@Entity
@Table()
public class A {
@Id
Long id;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name = "id", referencedColumnName="id", nullable = false)
private Set<B> b;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name = "id", referencedColumnName="ID", nullable = false)
private Set<C> c;
}
@Entity
@Table()
public class B{
@Id
Long id;
}
@Entity
@Table()
public class C{
@Id
Long id;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name = "id", referencedColumnName="id", nullable = false)
private Set<D> D;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name = "id", referencedColumnName="ID", nullable = false)
private Set<E> E;
}
@Entity
@Table()
public class D{
@Id
Long id;
}
@Entity
@Table()
public class E{
@Id
Long id;
}
错误:
org.hibernate.HibernateException:拥有的实体实例不再引用具有 cascade="all-delete-orphan" 的集合:com.entity.CD
at org.hibernate.engine.internal.Collections.processDereferencedCollection(Collections.java:100) ~[hibernate-core-5.3.12.Final.jar:5.3.12.Final]
at org.hibernate.engine.internal.Collections.processUnreachableCollection(Collections.java:51) ~[hibernate-core-5.3.12.Final.jar:5.3.12.Final]
at org.hibernate.event.internal.AbstractFlushingEventListener.flushCollections(AbstractFlushingEventListener.java:262) ~[hibernate-core-5.3.12.Final.jar:5.3.12.Final]
at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:95) ~[hibernate-core-5.3.12.Final.jar:5.3.12.Final]
解决方案
推荐阅读
- c# - 如何在 c# Windows 窗体中将带十进制的文本框字符串转换为十进制。
- django - Django ORM 在一个查询中加入多对多关系
- amazon-web-services - AWS SQS 与单个工作人员?
- angular - 以角度 6 从 html 导出 Pdf
- python - df.plot.scatter 如何更改第二个 y 轴的大小?
- javascript - 在冲突之前创建引导日期选择器对象
- c# - 动态添加范围到列表
- java - 我可以阻止加载 RCP 编辑器吗
- bash - 在 less 命令中查找以前的搜索
- python - 使用 decode64 解码不正确的划桨时出错,存在填充?