由于实体脏污检查,SpringBoot / Hibernate在只读事务下触发来自查找存储库方法的更新查询

时间:2018-10-18 11:56:32

标签: java spring hibernate jpa spring-data-jpa

我有一个非@Transactional测试方法,该方法执行只读@Transactional服务。

服务正在执行repository.findX操作时,会引发错误

  

org.postgresql.util.PSQLException:错误:无法在只读事务中执行UPDATE

调试时,我看到错误查询。看起来Hibernate在执行查找程序之前先刷新,然后根据某些策略确定该实体是否为“脏”,它只是通过对内存中的所有字段进行更新来刷新基础实体

在进入@Transactional(只读)之前,如何确保没有写操作挂起??

1 个答案:

答案 0 :(得分:1)

如果default_transaction_read_only设置为on,则可以使用START TRANSACTION READ WRITE;进行读写事务

或通过编辑postgresql.conf或使用超级用户命令来更改设置

ALTER SYSTEM SET default_transaction_read_only = off;
相关问题