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