Spring 数据锁定

标签 spring postgresql jpa spring-data

我正在将 CrudRepository 与使用 @Lock 注释的方法一起使用。这将导致对行的共享/排他锁。底层数据库是 Postgresql 9.4。但是有没有办法为事务锁定整个表?

更新: 为什么我要锁定整个表的问题: 考虑一个包含具有单个值(整数)的行的表。每个事务都必须计算表中值的总和,并将总和作为新行插入。下一个事务必须再次计算值的总和,但现在使用新插入的值。

可能有更好的解决方案,欢迎提出其他想法。

最佳答案

您可以在打开交易时尝试这样做:

entityManager.createNativeQuery("LOCK TABLE public.table_name IN
EXCLUSIVE MODE").executeUpdate();

当然是 PostgreSQL 特定的,但你也有特定的问题

关于 Spring 数据锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33220444/

相关文章:

java - 如何外部化standalone.xml?

spring - Jackson 将日期序列化为时间戳

postgresql - 如何在 Aqueduct 和 Postgres 中使用不同的表名

asp.net - 使用 PostgreSQL 在 ASP.NET 中进行登录控制

java - @PreUpdate 不适用于 Spring Data JPA

java - JPA - EmbeddedId 与@ManytoOne

java - Spring数据存储库: "Containing" for Collections

java - SpringJUnit4ClassRunner 测试——从 ant 工作,而不是从 IDE

sql - postgresql:from 语句中的几个表

java - Spring Boot QueryDsl 返回由 : java. lang.UnsupportedOperationException 引起:null