ORA-02292: 违反完整性约束 (xxx) - child 找到记录
ORA-02292: integrity constraint (xxx) violated - child record found
如何使用 hibernate deleteAll() 删除所有条目?
我有一个 class 与多个 @oneToMany 关系(有 +5000 个 child 实体),当我尝试执行 deleteAll 时,我得到标题错误
oracle.jdbc.OracleDatabaseException: ORA-02292: integrity constraint (xxx) violated - child record found
我试过添加
cascade = {CascadeType.ALL}
和
orphanRemoval=true
@OneToMany 关系 class,但没有帮助。
跟下面class是双向关系
@OneToMany(targetEntity = XXX.class, fetch = FetchType.LAZY, cascade = {CascadeType.ALL}, orphanRemoval=true, mappedBy = "zzz")
@Fetch(FetchMode.SELECT)
@JsonManagedReference
private List<XXX> xxx;
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(targetEntity = YYY.class, fetch = FetchType.LAZY, orphanRemoval=true, cascade = {CascadeType.ALL}, mappedBy = "zzz")
@Fetch(FetchMode.SELECT)
@JsonManagedReference
private List<YYY> yyy;
具有 child 个元素,如
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
@JoinColumn(name = "XXX", nullable=false)
@JsonBackReference
private XXX zzz;
我也试过 HQL DELETE 查询,但那个 dosent 也让我去任何地方。
我究竟如何一致地删除所有这些实体?
到目前为止,自从这个问题开始以来,我已经手动删除了表格(几天前所有实体都被删除了),但这开始让我很烦,但我不知道该怎么做。
谢谢!
您已在您的父实体上设置 CascadeType.ALL
,最好的删除方法应该是在父实体上调用一次删除
如果您尝试删除一个子项,休眠可能会在仍有子项未删除的父项上传播删除。
这个问题之王的最后一招是:
- 启用
- 运行 sql 在 SQL 服务器中生成的查询
- 查找错误发生的位置评估当前数据库条件
- 必要时更改 JPA
如何使用 hibernate deleteAll() 删除所有条目?
我有一个 class 与多个 @oneToMany 关系(有 +5000 个 child 实体),当我尝试执行 deleteAll 时,我得到标题错误
oracle.jdbc.OracleDatabaseException: ORA-02292: integrity constraint (xxx) violated - child record found
我试过添加
cascade = {CascadeType.ALL}
和
orphanRemoval=true
@OneToMany 关系 class,但没有帮助。
跟下面class是双向关系
@OneToMany(targetEntity = XXX.class, fetch = FetchType.LAZY, cascade = {CascadeType.ALL}, orphanRemoval=true, mappedBy = "zzz")
@Fetch(FetchMode.SELECT)
@JsonManagedReference
private List<XXX> xxx;
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(targetEntity = YYY.class, fetch = FetchType.LAZY, orphanRemoval=true, cascade = {CascadeType.ALL}, mappedBy = "zzz")
@Fetch(FetchMode.SELECT)
@JsonManagedReference
private List<YYY> yyy;
具有 child 个元素,如
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
@JoinColumn(name = "XXX", nullable=false)
@JsonBackReference
private XXX zzz;
我也试过 HQL DELETE 查询,但那个 dosent 也让我去任何地方。
我究竟如何一致地删除所有这些实体? 到目前为止,自从这个问题开始以来,我已经手动删除了表格(几天前所有实体都被删除了),但这开始让我很烦,但我不知道该怎么做。
谢谢!
您已在您的父实体上设置 CascadeType.ALL
,最好的删除方法应该是在父实体上调用一次删除
如果您尝试删除一个子项,休眠可能会在仍有子项未删除的父项上传播删除。
这个问题之王的最后一招是:
- 启用
- 运行 sql 在 SQL 服务器中生成的查询
- 查找错误发生的位置评估当前数据库条件
- 必要时更改 JPA