我的问题。 我有一个简单的表,令牌。它只有几个属性。 id,令牌,用户名,版本和expire_date。 我有一个将创建或更新令牌的休息服务。因此,当用户请求令牌时,我想检查用户(使用用户名)是否已经有条目,如果是,则只需更新expire_date并返回,如果没有条目创建新条目。问题是,如果我创建了一个测试用几个并发用户(使用Jmeter脚本),这称为休息服务,休眠将非常快地抛出一个StaleObject异常,因为会发生什么是:线程A将为用户选择行,改变expire_date,碰撞版本,同时线程B会做同样的事情,但实际上会在线程A提交之前提交。现在当线程A将提交hibernate检测到版本更改并将抛出异常和回滚。所有作品都按文件记录如何使用休眠创建线程安全插入或更新(处理乐观锁定)
但我想要发生的是,线程B将等待线程A完成之前完成它的事情。
解决此问题的最佳方法是什么?我应该使用java并发包并实现锁定吗?或者是实现自定义jpa隔离级别的更好选择?
感谢