私はいくつかのデータベース呼び出しを行うアプリケーション内のメソッドの周りに宣言的なトランザクションを使用しようとしています。Spring - メソッドの周りにトランザクションが適用されていません
@Transactional
public MyReturnType myTransactionalMethod(SomeType1 param) {
SomeType2 someIntermediateObject = dao1.doStuff(param);
MyReturnType retObj = dao2.doMoreStuff(someIntermediateObject);
return retObj;
}
私はその後、私のXMLの設定で春の取引を設定します:
<tx:annotation-driven transaction-manager="transactionManager" order="200"/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>
私は、望んでいた私は、これに似たものになり、問題のメソッドに@Transactional注釈を適用していることでしたトランザクションはこの方法で失敗した場合に正常にロールバックすることを確認するために、そのメソッドをテストするので、私はこのような何かを見て私の方法で変更する:私はステートメ
public MyReturnType myTransactionalMethod(SomeType1 param) {
SomeType2 someIntermediateObject = dao1.doStuff(param);
MyReturnType retObj = dao2.doMoreStuff(someIntermediateObject);
throw new RuntimeException(); //The RuntimeException should trigger a rollback
}
をこの2番目の方法では、私は予想したようにロールバックをしませんでしたが、作成したエントリをデータベースに残しました。私はまた、スタックのトレースでは、トランザクションのものを処理する挿入された私のメソッドの周りのスプリングのフックのいくつかの兆候を見ることを期待していましたが、私はこのトランザクションメソッドの直前に、 。
誰かが私が間違っていることを見ることができますが、トランザクション処理が適用されない場合のこの動作の原因になりますか?
ショーを。 – chrylis