0

假设 user_1 和 user_2 在同一时刻访问了一个 id = 101、name = Rahul、accountBalance = 1500 的员工。所以两个用户现在都有具有上述价值观的员工。User_1 向 accountBalance 添加了 1000 并更新了员工。所以他的余额现在在数据库中是 2500。

在 user_1 更新员工之后,user_2 立即将 500 添加到帐户余额中。因此 500 将添加到当前在 user_2 手中的员工帐户余额中。所以 1500+500 =2000。

但是,实际上应该是 (1500+1000)+500 = 3000。

这个问题是如何在java中用hibernate处理的?

我们是否要在业务方法 updateEmployee() 中再次检查最新值,然后将金额添加到新的 accountBalance 中?

请帮助我以适当的方式处理这种情况。谢谢并恭祝安康

4

2 回答 2

2

您可以通过启用乐观锁定来做到这一点,使用带有@Version 注释的字段。在每次更新时,Hibernate 将检查数据库中的版本是否与内存中的版本相同,并增加版本。如果版本不匹配,它将引发异常。

更多关于乐观锁定的文档

于 2012-07-03T05:55:45.690 回答
1

Hibernate 的用户版本控制概念。在这种情况下,如果 user_2 更新了相同的记录,hibernate 会在更新之前检查相同的记录是否已被修改,如果是,则抛出异常。因此,您的应用程序必须处理该异常并让 user_2 通知记录的更改并重新加载记录再次。

于 2012-07-03T06:01:26.720 回答