【发布时间】:2012-09-11 16:11:19
【问题描述】:
我有一个调用@Transactional(REQUIRES_NEW) 的@Transactional(REQUIRED) 方法。我看到的默认行为是内部事务正在回滚,但外部事务正在提交。这是预期的行为吗?
【问题讨论】:
标签: spring transactions
我有一个调用@Transactional(REQUIRES_NEW) 的@Transactional(REQUIRED) 方法。我看到的默认行为是内部事务正在回滚,但外部事务正在提交。这是预期的行为吗?
【问题讨论】:
标签: spring transactions
是的,这是预期的行为。执行内部事务时,外部事务被挂起。一旦内部事务结束(无论是提交还是回滚),外部事务就会恢复。
顺便说一句,the documentation 这么说:
PROPAGATION_REQUIRES_NEW 与 PROPAGATION_REQUIRED 相比,使用 每个受影响的交易完全独立的交易 范围。在这种情况下,基础的实物交易是 不同,因此可以独立提交或回滚,具有 外部事务不受内部事务回滚的影响 状态。
【讨论】: