【发布时间】:2015-02-24 08:51:28
【问题描述】:
更新加密时不需要更新值,但删除加密时删除所有子值:
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;
...
}
删除 Crypto 时的 SQL 调试:
休眠:从“加密”中删除“id”=?
错误:
java.sql.SQLIntegrityConstraintViolationException: ORA-02292: 违反完整性约束 (ARTIKUA.FK_8R5C0WLWJ3LIJTVJ559EV8NAT) - 找到子记录
数据库是甲骨文 为什么 Hibernate 在删除“Crypto”之前,不删除所有子“Values”值?
【问题讨论】:
-
如何删除 Crypto 对象实例?通过 HQL?
-
会话 = sf.openSession(); session.delete(); session.close();
-
你能粘贴你的完整代码吗?奇怪的是 session.delete(crypto) 没有删除子实例。你在删除之前加载加密对象吗?
-
加密哭= session.get(Crypto.class, 5); session.delete(cry);