1 回答
TA贡献1887条经验 获得超5个赞
我宁愿建议您在表中引入列。请参阅文档“乐观锁定”。versionmember_balance
正如你所提到的,你不能修改架构;你可以去无版本乐观锁,在这里解释。
或者你可能想去悲观的锁定,在这里解释。然后,您可以修改您的方法,在那里获取成员余额,不要使用 。例如decrementBalance()findMemberBalance()
@Transactional
public void decrementBalance(Member member) {
MemberBalance memberBalance = entityManager.find(
MemberBalance.class, member.id, LockModeType.PESSIMISTIC_WRITE,
Collections.singletonMap( "javax.persistence.lock.timeout", 200 ) //If not supported, the Hibernate dialect ignores this query hint.
);
if (memberBalance.getTokens() >= 1) {
memberBalance.setTokens(memberBalance.getTokens() - 1);
this.save(memberBalance);
} else {
throw new SomeCustomRTException("No balance");
}
}
铌:它可能无法正常工作;它只是为了给你一些提示。
添加回答
举报
