更新加密时我不需要更新值,但删除加密时删除所有子值:
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调试:
Hibernate:从&#34; Crypto&#34;删除在哪里&#34; id&#34; =?
错误:
java.sql.SQLIntegrityConstraintViolationException:ORA-02292:违反完整性约束(ARTIKUA.FK_8R5C0WLWJ3LIJTVJ559EV8NAT) - 找到子记录
DB是Oracle 为什么Hibernate,在删除&#34; Crypto&#34;之前,不要删除他们所有的孩子&#34;值&#34;值?
答案 0 :(得分:1)
如果你是通过hql删除Crypto对象,hibernate不能级联删除操作。由于级联是一种休眠配置问题(即hbm.xml或注释),因此必须将数据返回到Java以进行级联处理。在HQL中执行UPDATE / DELETE行修改完全在数据库服务器上进行。
你能做什么: