问题描述
我想锁定表中的单个记录,直到它没有完成更新。
问题是它是一个 Web 应用程序,我提供了一个 REST API 来发送数据进行编辑。我曾尝试使用 @Lock
注释和 query.setLockMode(LockModeType.pessimistic_READ)
。
我也尝试过 SELECT * from TBALE_NAME tn where tn.id =:id for update
,这也只有在交易处于活动状态时才有效。
只要事务未完成,即只要 API 不返回数据,上述这些事情就会起作用并锁定记录。一旦数据被发送到 API 的 UI,锁就会被释放。
我的控制器 API 代码
@GetMapping("/getData/{id}")
public Object getData(@PathVariable("id") Long id){
return myService.getData(id)
}
只要上面的 API 返回数据,如果我添加一个,就会释放锁。我想保持锁定状态,直到同一个用户更新了表格行。
MyService 方法代码
public Object getData(Long id){
repositoty.findById(id);
}
我的存储库使用 JPA 实现:
Object findById(Long id);
需要什么
当用户进入 UI 中的编辑页面并调用 API /getData/id 时,我想为每个人阻止该记录。因此,如果有任何其他用户试图编辑该记录,他们将收到某种异常,表明该记录已被使用。
我无法在表中创建列来保存用户正在使用它的行的信息。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)