2017-05-26 4 views
1

トランザクションがコードに反映されて正常にロールバックされます。トランザクションで実行された操作はデータベースに反映されず、 - コミットされたtxのアクティブな状態。つまり、PMFのtx(トランザクション)およびUndoのDynaPMFロールバックを使用してレコードが削除された場合、操作は機能しません。 GAEでJdoを使用するトランザクションでロールバックが機能しません。コードは正常に実行されていますが、

ここPMFは、DynaPMFは、二つの異なるデータベースの2つの異なるPersistanceMangerFactoryを参照

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

出力:

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

が正常発生にロールバックコードで示すが、データベースに反映されていません。

+0

[もっと速い回答を得るために、どのような状況で「緊急」または他の同様のフレーズを追加することができますか?](https://meta.stackoverflow.com/q/326569) - 概要は次のとおりです。これはボランティアに対処する理想的な方法ではなく、おそらく回答を得ることには非生産的であるということです。これをあなたの質問に追加しないでください。 – halfer

答えて

0

JDO当たりロールバックのみ https://db.apache.org/jdo/state_transition.htmlから見ることができ、他の状態からロールバックは、データストアに反映させることができないようにJDOライフサイクル中に持続性、清浄な状態を有するこれらのオブジェクトに対して実行することができるように。

関連する問題