我正在将 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/