我有一个项目,其中hibernate类映射到基础表。有一个表有一个复合键。我正在删除唯一行并在我的hibernate对象中添加相同的行。这两个对象都是另一个对象的一部分,我将其保存到db中。程序抛出“UNIQUE CONSTRAINT VIOLATION”错误,这是因为插入在删除操作之前发生。有没有办法解决这个问题,使用hibernate中的一些设置,或者我是否有必要的逻辑[在hibernate对象操作之外]以确保不会发生这种情况。
答案 0 :(得分:2)
在尝试之前,您应确保将对象删除刷新到数据库 使用相同的键创建另一个对象。但在你的情况下,最好只更换 要用新的一个去除对象内的数据。从休眠的角度来看,同一个PC意味着相同的对象。
答案 1 :(得分:1)
当我过去使用过Hibernate时,90%的时间没有区别你调用insert或delete语句,甚至提交的顺序。在大多数情况下,除非您自己管理交易,否则会话实际关闭交易的位置很重要。
但是关于hibernate的一个好处是你不应该删除具有相同密钥的行,你应该只使用相关数据更新其对象实例并保留更新实例。 Hibernate将负责其余的工作......