Zagnieżdżone transakcje JPA i blokowanie

Rozważmy scenariusz, w którym istnieją dwie metody w różnych bezstanowych komponentach bean

public class Bean_A {
   Bean_B beanB; // Injected or whatever
   public void methodA() {
    Entity e1 = // get from db
    e1.setName("Blah");
    entityManager.persist(e1);
    int age = beanB.methodB();

   }
} 
public class Bean_B {
  //Note transaction
  @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
   public void methodB() {

    // complex calc to calculate age  
  }

}

Transakcja rozpoczęta przez BeanA.methodA zostanie zawieszona, a nowa transakcja zostanie uruchomiona w BeanB.methodB. Co zrobić, jeśli methodB musi uzyskać dostęp do tego samego obiektu, który został zmodyfikowany przez metodę A. Spowodowałoby to zakleszczenie. Czy można temu zapobiec bez polegania na poziomach izolacji?

questionAnswers(4)

yourAnswerToTheQuestion