JPA根据另一列增加@version列数

时间:2014-12-04 14:08:26

标签: java jpa

我是JPA的新手,请在下面提供一些帮助

我的实体UserTransaction位于

之下
@Entity
@Table(name = "user_transaction")
public class UserTransaction{

    @Basic
    @Column(name = "current_balance")
    private BigDecimal currentBalance;

    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
    @JoinColumn(name = "user_id", columnDefinition = "BIGINT UNSIGNED")
    private User user;

    @Version
    private Integer version;

    @Column(nullable = false, columnDefinition = "BOOLEAN default '1'")
    protected Boolean active = true;
}

这里插入新记录,其中active = 1,同时用户余额更新,并将现有记录更改为active = 0。如果我想更新我的余额,我将获取我的用户的active = 1记录并计算我的当前余额,然后更新该记录active = 0并创建一个active = 1的新记录。

在这种情况下,当多个线程尝试更改余额时,结果会创建多个active = 1记录。我正在寻找解决方案。我有建议在我的实体中添加@Version列。我添加了它。

如果我更新现有列,则@Version列值会增加,但在插入另一个版本的列时会出现错误,而其他用户的版本也是如此。

是否可以根据用户增加版本列数?另外,我建议在并发期间处理我的用户余额。

0 个答案:

没有答案