ObjectOptimisticLockingFailureException
当我使用 microsoft sqlserver 驱动程序 (sqljdbc4.jar) 时,我得到了批量更新。但是,使用相同的代码,当我将驱动程序切换到 Jtds 驱动程序时,我能够成功地进行批量更新和插入。我们在 Hibernate 中使用 sql server 数据库和 JPA。
下面是我正在做的事情。
从数据库中获取数据,status_code 为 SUBMITTED,当前标志为 Y。
批量更新记录到当前标志 N 并批量插入具有新状态 BATCH_LOCKED 的新记录。
- 使用当前标志 N 再次批量更新上述记录,并批量插入状态为 COMPLETED 的新记录。
所有这些更新都顺利进行。提交事务时,我收到以下异常
我没有专门定义乐观锁定,也没有为任何列定义 @Version 注释。默认情况下乐观锁定是如何发生的?
如果我评论第 3 步,则不会出现异常。
为什么我没有得到 JTDS 驱动程序的异常?
org.springframework.orm.ObjectOptimisticLockingFailureException:批量更新从更新[1]返回了意外的行数;实际行数:0;预期:1;嵌套异常是 org.hibernate.StaleStateException:批量更新从更新 [1] 返回了意外的行数;实际行数:0;预期:1