[英]JPA : How to update users' deposit correctly?
我们的User
类定义如下:
public User{
// 账户余额 (Account Balance)
@Column(nullable = false)
public BigDecimal deposit = new BigDecimal(0);
}
现在我们需要在不同的交易中更新用户的存款,但这是我们遇到的问题。 例如 :
deposit = 1000
。 deposit = 1000
。 deposit
提取200,并将deposit
修改为800。 deposit
取出500,并将deposit
修改为500。 在这种情况下,我们的用户实际需要支付700的deposit
而只剩下300。 但最后一笔交易会将其覆盖为错误的数字。
我们该如何纠正呢?
我的第一个想法是添加一个@Transient
字段来表示我们从数据库读取的数据,当我们需要更新User
,数据库中的deposit
应与我们之前分配的@transient
字段相同。 但是如何将@transient
映射到现有的数据库列(这意味着当我们加载User
, @transient
字段应自动填充)?
您遇到了一个众所周知的问题。
解决此问题的最简单方法是使用某种锁定,或者是数据库上的悲观锁定,或者是应用程序中的乐观锁定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.