Может ли транзакция с propogation reqiures new обновить объект, который заблокирован другой транзакцией?

@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);
}

Метод a lock actor and call method B, метод B begin transaction with propogation requires new.Я хотел бы знать, могу ли я обновить актера в методе B.

1 ответ

  1. Нет это не позволит вам обновить с распространением.REQUIRES_NEW.
    Однако, если вы хотите достичь этой функциональности, вы можете сделать это с помощью:

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

    Прочитать транзакционный документ spring:
    http://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/transaction.html