使用Java,Hibernate和Oracle数据库。 我有两个并发进程:同时更新和删除一张表
- Process1从table1中删除一些实体。 (多个:从table1中删除,其中id = ...)由本地hibernate查询完成。
- 进程2更新表1中的相同/其他实体。 (multiple:update table1 set name = ... where id = ...)由jpa库删除方法完成。
目前有时例外
CannotAcquireLockException is thrown,
(SQL Error: 60, SQLState: 61000..
ORA-00060: deadlock detected while waiting for resource)
所以,问题是:什么是怎么回事,我该怎么避免异常?任何解决方法?
重要:如果发生冲突,我会满意,如果删除成功,更新将不会执行任何操作。
你不觉得[mcve]会有帮助吗?如果您查看从死锁中生成的Oracle跟踪文件,它将为您提供导致问题原因的所有详细信息。 – OldProgrammer
我想我描述的问题不够好。如果我有一个Java代码会在任何Oracle数据库上出现100%的错误,我肯定会给你。 –