我有一个@Transactional(REQUIRED)方法调用@Transactional(REQUIRES_NEW)。我看到的默认行为是内部事务正在回滚,但外部正在提交。这是预期的行为吗?
答案 0 :(得分:2)
是的,这是预期的行为。执行内部事务时暂停外部事务。一旦内部事务结束(无论是提交还是回滚),外部事务将恢复。
BTW,the documentation说:
与PROPAGATION_REQUIRED相比,PROPAGATION_REQUIRES_NEW使用了 每个受影响的交易完全独立的交易 范围。在这种情况下,底层的物理交易是 不同的,因此可以独立提交或回滚 外部事务不受内部事务的回滚影响 状态。