Spring+Struts+Hibernate セットアップで宣言型トランザクション管理を実装しようとしています。これは私のapplicationcontext.xmlの一部です
<property>
<props>
<prop key="foodoo*">PROPAGATION_REQUIRED,-FooException</prop>
</props>
</property>
FooService クラスに 2 つのパブリック メソッドを定義しました -> UpdateFoo、foodooTest、および 2 つのプライベート メソッド (更新ロジックを持つ) -> Test1 と Test2
呼び出しは次のようになります。
UpdateFoo->foodooTest->Test1
->Test2
(foodooTest がトランザクションをトリガーする必要があります) Bean を作成します
FooService fooService = (FooService)context.getBean("fooService");
//and call
fooService.UpdateFoo();
Test2 は FooException をスローするため、トランザクションがロールバックすることを期待しています。しかし、そうではありません。コミットは、Test1 と Test2 のそれぞれで発生します (例外まで)。更新には Hibernate getHibernateTemplate.Merge() を使用します。私のデータベース エンジンは InnoDB です。
ここで何が欠けているのかわかりません。