hibernate乐观锁:当前线程

时间:2018-04-30 14:42:40

标签: hibernate optimistic-locking optimistic-concurrency

时间表如下所示:

用户(浏览器)--------------------------->更新TARGET 2 ----------------->

线程------>更新TARGET 1 ---------> long_operation ----->更新TARGET 3

我启动一个线程来执行long_operation,并在操作之前和之后更新TARGET对象。

问题是,在long_operation期间,用户可以在UI中更新TARGET。因此,当我尝试在long_operation之后更新TARGET时,我得到一个乐观的锁定异常。

我使用版本号进行乐观锁定,而更新2则在事务中。

我尝试在不同的交易中执行更新1和3 - >不起作用。 我还尝试在执行update_3之前更新版本号 - >不起作用。

不确定这里做什么是正确的....

1 个答案:

答案 0 :(得分:0)

我得到了我做错的事。

我需要从缓存中逐出TARGET对象,并在执行update_3之前从数据库重新读取它以获取最新版本。

在我更新“旧”TARGET之前,因此获得乐观的锁定异常。