微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决即使在返回 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 举报,一经查实,本站将立刻删除。