更新加密时不需要更新值,但在删除加密时删除所有子值:
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 行修改完全在数据库服务器上进行。
您可以执行的操作:
- 获取应删除的所有加密实例。 对于他们每个人。
- 调用 entityManager.remove() 或 session.delete()。