Verschachtelte JPA-Transaktionen und Sperren

Stellen Sie sich das Szenario vor, dass zwei Methoden in verschiedenen zustandslosen Beans vorhanden sind

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  
  }

}

Die von BeanA.methodA gestartete Transaktion würde ausgesetzt und eine neue Transaktion in BeanB.methodB gestartet. Was ist, wenn die Methode B auf dieselbe Entität zugreifen muss, die von Methode A geändert wurde? Dies würde zu einem Deadlock führen. Ist es möglich, dies zu verhindern, ohne sich auf Isolationsstufen zu verlassen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage