为什么 @Transactional(Propagation.NOT_SUPPORTED) 没有按预期工作?

Why is @Transactional(Propagation.NOT_SUPPORTED) not working as expected?

鉴于以下情况:

  1. 使用 @Transactional(Propagation.REQUIRED) 在 class 级别开始集成测试。
  2. 插入了一些参考数据,并在方法级别指定了 Propagation.NOT_SUPPORTED
  3. 标记为 @Transactional(Propagation.REQUIRED) 的服务方法试图查找在步骤 2 中插入的一些参考数据。

服务方法看不到引用数据!

我的理解是,如果数据是在事务外插入的,那么无论是在事务内还是事务外,其他方法都可以立即访问它。谁能解释一下?

不是一个完整的答案,但我认为这些问题部分是由 运行 总体事务中的集成测试引起的 - this article 解释了为什么这是一个坏主意。我将尝试将所有数据填充重写为非事务性的,并在每次测试结束时手动清除。