【发布时间】:2018-05-04 18:03:29
【问题描述】:
有两个线程,每个线程绑定两个事务:
DEBUG o.s.orm.jpa.JpaTransactionManager - Creating new transaction with name [com.workflow.consumer.RecordEventConsumer$MockitoMock$1882263982.handleRecordsAddedEvent]: PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED; ''
Creating new transaction with name [com.workflow.statemachine.action.CreateContentAction.execute]: PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED; ''
两个隔离级别都是READ_UNCOMMITTED。但是当第一个线程使用
repository.saveAndFlush(contextObject)
仓库在哪里JpaRepository<T, I> repository
还有插入发生的实际日志DEBUG org.hibernate.SQL - insert into task_unit ...etc
第二个线程的事务仍然无法检索到这个对象:
repository.getOne(id);
repository.findOne(id);
entityManager.find(class, id);
不止于此,我已经尝试直接连接到数据库并触发
BEGIN TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * from task_unit
还是没有成功。
我错过了什么吗?
【问题讨论】:
-
Postgres 不允许脏读
标签: spring postgresql hibernate transactions spring-data