即使在返回 API 响应后,如何在 Java 中为 REST API 锁定 Oracle DB 表行 我的控制器 API 代码MyService 方法代码需要什么

问题描述

我想锁定表中的单个记录,直到它没有完成更新。

问题是它是一个 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 (将#修改为@)