@Transactional 方法可以在不挂起的情况下调用另一个@Transactional 方法吗?
Can @Transactional method call another @Transactional method without suspending?
我有不同的方法 A 和方法 B 类。两者都带有@Transactional 注释。方法A正在调用B。是否有任何解决方案可以在不同的事务中调用B而不暂停A事务? Propagation.REQUIRES_NEW B 提供了在调用时始终创建新事务但暂停调用者事务的可能性
据我所知,您不能使用注释 REQUIRED_NEW。
但是spring也支持使用 TransactionTemplate、TransactionDefinition 手动进行交易。
我们可以只用一个 PlatformTransactionManager 使用多个定义。
事务传播行为Propagation.NESTED 支持要求。
请通读 Spring 官方文档:Understanding PROPAGATION_NESTED
PROPAGATION_NESTED uses a single physical transaction with multiple
savepoints that it can roll back to. Such partial rollbacks let an
inner transaction scope trigger a rollback for its scope, with the
outer transaction being able to continue the physical transaction
despite some operations having been rolled back.
有关 Spring 事务中嵌套传播的其他详细信息也可以在此 answer 中阅读。
我有不同的方法 A 和方法 B 类。两者都带有@Transactional 注释。方法A正在调用B。是否有任何解决方案可以在不同的事务中调用B而不暂停A事务? Propagation.REQUIRES_NEW B 提供了在调用时始终创建新事务但暂停调用者事务的可能性
据我所知,您不能使用注释 REQUIRED_NEW。
但是spring也支持使用 TransactionTemplate、TransactionDefinition 手动进行交易。
我们可以只用一个 PlatformTransactionManager 使用多个定义。
事务传播行为Propagation.NESTED 支持要求。
请通读 Spring 官方文档:Understanding PROPAGATION_NESTED
PROPAGATION_NESTED uses a single physical transaction with multiple savepoints that it can roll back to. Such partial rollbacks let an inner transaction scope trigger a rollback for its scope, with the outer transaction being able to continue the physical transaction despite some operations having been rolled back.
有关 Spring 事务中嵌套传播的其他详细信息也可以在此 answer 中阅读。