为什么 @Transactional(Propagation.NOT_SUPPORTED) 没有按预期工作?
Why is @Transactional(Propagation.NOT_SUPPORTED) not working as expected?
鉴于以下情况:
- 使用
@Transactional(Propagation.REQUIRED)
在 class 级别开始集成测试。
- 插入了一些参考数据,并在方法级别指定了
Propagation.NOT_SUPPORTED
。
- 标记为
@Transactional(Propagation.REQUIRED)
的服务方法试图查找在步骤 2 中插入的一些参考数据。
服务方法看不到引用数据!
我的理解是,如果数据是在事务外插入的,那么无论是在事务内还是事务外,其他方法都可以立即访问它。谁能解释一下?
不是一个完整的答案,但我认为这些问题部分是由 运行 总体事务中的集成测试引起的 - this article 解释了为什么这是一个坏主意。我将尝试将所有数据填充重写为非事务性的,并在每次测试结束时手动清除。
鉴于以下情况:
- 使用
@Transactional(Propagation.REQUIRED)
在 class 级别开始集成测试。 - 插入了一些参考数据,并在方法级别指定了
Propagation.NOT_SUPPORTED
。 - 标记为
@Transactional(Propagation.REQUIRED)
的服务方法试图查找在步骤 2 中插入的一些参考数据。
服务方法看不到引用数据!
我的理解是,如果数据是在事务外插入的,那么无论是在事务内还是事务外,其他方法都可以立即访问它。谁能解释一下?
不是一个完整的答案,但我认为这些问题部分是由 运行 总体事务中的集成测试引起的 - this article 解释了为什么这是一个坏主意。我将尝试将所有数据填充重写为非事务性的,并在每次测试结束时手动清除。