违反完整性约束 (..) - 找到子记录、Java、Oracle、Hibernate



更新加密时不需要更新值,但在删除加密时删除所有子值:

class Crypto {
...
    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinColumn(name="cryptoId", updatable=false)
    private Set<Values> values;
...
}

class Values {
...
    @ManyToOne
    @JoinColumn(name = "cryptoId")
    private Crypto crypto;
...
}

删除加密时SQL调试:

休眠:从"加密"中删除,其中"id"=?

错误:

java.sql.SQLIntegrityConstraintViolationException: ORA-02292: integrity constraint (ARTIKUA.FK_8R5C0WLWJ3LIJTVJ559EV8NAT) 违反 - 找到子记录

数据库是甲骨文为什么Hibernate,在删除"加密"之前,不要删除所有子"值"值?

如果要通过 hql 删除 Crypto 对象,则休眠不能级联删除操作。由于级联是休眠配置问题(即 hbm.xml 或注释),因此必须将数据返回到 Java 进行处理级联。在 HQL 中执行 UPDATE/DELETE 行修改完全在数据库服务器上进行。

您可以执行的操作:

  1. 获取应删除的所有加密实例。 对于他们每个人。
  2. 调用 entityManager.remove() 或 session.delete()。

最新更新