带有propogation的事务是否可以更新由另一个事务锁定的对象?

时间:2016-11-07 09:13:59

标签: java mybatis spring-transactions

@Transactional("transaction1")
public void A(){
    Actor actor = selectForUpdate(id);
    testService.B(actor);
}

@Transactional("transaction1",propagation = Propagation.REQUIRES_NEW)
public void B(Actor actor){
  update(actor);
}

方法一个锁定的actor和调用方法B,方法B开始带有propogation的事务需要new.I想知道我是否可以在方法B中更新actor。

1 个答案:

答案 0 :(得分:0)

不,它不允许您使用Propagation.REQUIRES_NEW进行更新。 但是,如果要实现此功能,可以通过以下方式执行此操作:

@Transactional("transaction1",propagation = Propagation.REQUIRED)
public void B(Actor actor){
  update(actor);
}

阅读春季交易文件: http://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/transaction.html