1 回答

TA貢獻1887條經驗 獲得超5個贊
我寧愿建議您在表中引入列。請參閱文檔“樂觀鎖定”。version
member_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");
}
}
鈮:它可能無法正常工作;它只是為了給你一些提示。
添加回答
舉報