2016-09-29 3 views
-1

オブジェクトがDBから読み込んでそれを編集したときに、保存プロセスでデータを保存するか破棄するかを決定します。しかし、JPA/Hibernateは自動的に編集したデータを保存します(Auto Flush)。保存しなかったJPA-Hibernate永続データ

DB.beginTransaction 
try{ 
    MyObject myObj = DB.readMyObject(); 
    myObj.setCurrentTime(System.currentTimeinMills()); 

    MyObject myObj1 = DB.readMyObject(); 
    myObj1.setCurrentTime(System.currentTimeinMills()); 

     // myObj Edited. 
     // myObj1 Edited. 

    if(isPermittedToSave()){ 
      DB.persist(myObj); 
    } 
    DB.persist(myObj1); 

    DB.commitTransaction(); 
} Catch(Exception e) { 
    DB.rollbackTransaction(); 
} 

私は常に「myObj1」を保持します。これらのプロセスはすべて単一のトランザクションで実行する必要があります。

JPA/Hibernateのこの動作を無効にするにはどうすればよいですか。また、Lazy Fetchを実行して "myObj"を更新できるようにする必要があります。

答えて

0

私はデータを保存するか廃棄するかを決定します。

これは、長期間実行されるトランザクションが便利になる場所です。変更を永続化する場合は、トランザクションをコミットします。変更を破棄する場合は、トランザクションをロールバックします。

自動フラッシュ設定はここでは関係ありません。一方、自動コミットは無効にする必要があります。

+0

貴重な@Antoniossssあなたの速い返信に感謝します。私はこれのための解決策を提案できますか?ありがとう。 – sam

+0

トランザクションを開始し、作業を行い、変更を保持する場合はコミットし、破棄する場合はロールバックします。 – Antoniossss

関連する問題