我的数据库中有一个 high_scores 表,它有两个值:
player_id
highest_score
我需要一个存储新高分的存储库方法。对于如此简单的事情,我真的不想用乐观锁重试逻辑弄脏我的代码。我想要执行的基本上是这一行:
update high_scores
set highest_score = :new_high_score
where player_id = :player_id
and highest_score <= :new_high_score
这基本上可以很好地实现我的目标,尽管如果用户没有高分,我也不得不担心创建一个高分。我需要确保我永远不会用较低的分数覆盖高分,但这是该表需要的唯一锁定方式。
有没有办法让hibernate做这样的事情,或者我需要求助于自定义SQL?