2017-05-26 6 views
1

Die Transaktion wird erfolgreich zurückgesetzt, wie durch den Code widergespiegelt. Die Operation, die in der Transaktion ausgeführt wurden, wurden jedoch nicht in der Datenbank widergespiegelt und nicht in Rollback -committed aktiven Zustand von tx dh wenn Datensätze mit tx (Transaction) von PMF und DynaPMF Rollback zum Rückgängigmachen der Operation gelöscht werden, funktioniert nicht.Rollback funktioniert nicht für Transaktion mit Jdo in GAE, obwohl Code erfolgreich ausgeführt wird

Hier PMF, DynaPMF auf 2 verschiedene PersistanceMangerFactory beziehen sich für zwei verschiedene Datenbank

if (isTransactionLocal || (PMF.getTransactionCounter() > 0 || DynaPMF.getTransactionCounter() > 0)) { 
       //tx.rollback(); 
       if(PMF.getPerThreadTransaction()!=null){ 
        tx=PMF.getPerThreadTransaction(); 
        System.err.println(tx.hashCode()+"transaction thread is Alive =>"+tx.isActive()); 
        if(tx.isActive()){ 
         tx.rollback(); 
         System.err.println("rollback for tx = "+tx.hashCode()+" done ."); 
        } 
       } 

       if(DynaPMF.getPerThreadTransaction()!=null){ 
        tx=DynaPMF.getPerThreadTransaction(); 
        System.err.println(tx.hashCode()+"transaction thread is Alive =>"+tx.isActive()); 
        if(tx.isActive()){ 
         tx.rollback(); 
         System.err.println("rollback for tx = "+tx.hashCode()+" done ."); 
        } 

       } 
PMF.setPerThreadTransaction(null); 
DynaPMF.setPerThreadTransaction(null); 

Ausgang:

1861140113transaction thread is Alive =>true 
rollback for tx = 1861140113 done . 
336180090transaction thread is Alive =>true 
rollback for tx = 336180090 done . 

Es wird in Code anzeigt, der erfolgreich aufgetreten Rollbacks aber reflektieren nicht in der Datenbank.

+0

Bitte lesen [Unter welchen Umständen kann ich "dringende" oder andere ähnliche Sätze zu meiner Frage hinzufügen, um schnellere Antworten zu erhalten?] (Https://meta.stackoverflow.com/q/326569) - Die Zusammenfassung ist dass dies kein idealer Weg ist, um Freiwillige anzusprechen, und dass es wahrscheinlich kontraproduktiv ist, Antworten zu erhalten. Bitte unterlassen Sie das Hinzufügen zu Ihren Fragen. – halfer

Antwort

0

Wie pro JDO-Rollback kann nur auf diesen Objekten durchgeführt werden, die während der JDO Lifecycle persistance-sauberen Zustand haben, wie aus https://db.apache.org/jdo/state_transition.html und Rollbacks von anderem Zustand nicht zu Datenspeicher reflektiert werden kann gesehen werden kann.

Verwandte Themen