2017-05-20 14 views
0
WAObservations observation = getHibernateTemplate().get(WAObservations.class,1); 

ステータスはマイクロに関連するいくつかのより多くの値を設定するHibernate Persistenceオブジェクトが更新されないようにする方法データをそのオブジェクトに設定したら?

WAMicroObservations aMicroObservations = new WAMicroObservations(); 
aMicroObservations.setWaObservationId(observation); 

を更新されると

observation.setObservationStatus(Constants.observation_completed); 

新しいレコードは、次の2つの依存関係のテーブルに生成される状態を、ここでいくつかのデータを設定し、更新しますここで例外が発生した場合、これらの2つの依存関係テーブルは更新されません。問題ありませんが、上記のWAObservationsテーブルは自動的に更新されました。

WAChemObservations aChemObservations = new WAChemObservations(); 
aChemObservations.setWaObservationId(observation); 


getHibernateTemplate().save(aMicroObservations); 
getHibernateTemplate().save(aChemObservations); 

WAObservationsテーブルが更新されないようにする方法コード実行中に例外が発生した場合、

ご協力いただければ幸いです。

ありがとうございます!!!

答えて

0

実際のビジネスコードを見ずに推測するのは難しいですが、トランザクション境界を適切に定義するだけで済みます。 「すべてまたは何もしない」アプローチに移行する場合は、すべての操作に共通する1つのトランザクションを定義します。すべてのコードが例外なく完了した場合にのみ、変更ステートメントがコミットされます。それ以外の場合、例外が発生すると、ロールバックが発生します。

declarative transaction managementをご覧ください。

少なくともdeprecated HibernateTemplateの代わりにSessionFactory.getCurrentSession()を使用してください。

+0

返信いただきありがとうございます。トランザクションを使用していても自動的に更新されます。あなたが私の問題を理解していることを願っています。 –

+0

多分あなたはこの取引に関連する実際のビジネスを追加することができます。 –

+0

transactionTemplate.execute( 新規のTransactionCallback(){ @OverrideパブリックオブジェクトdoInTransaction(TransactionStatusのTS){ 試み{ status.append(Constants.SUCCESS_STATUS); }キャッチ(例外e){ ts.setRollbackOnly(); status.append(Constants.FAILURE_STATUS); }} }); –

関連する問題