我試圖在Spring + Struts + Hibernate設置中實現聲明式事務管理。 這是我的applicationContext.xml的一部分在Spring聲明式事務模式下,事務似乎不起作用
<property>
<props>
<prop key="foodoo*">PROPAGATION_REQUIRED,-FooException</prop>
</props>
</property>
我已經定義在我FooService接口類兩個公共方法 - > UpdateFoo,foodooTest 和兩個私有方法(其具有更新邏輯) - >測試1和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。
我不知道我在這裏錯過了什麼。
你應該發佈更多相關SUFF:Spring配置以及觸發交易的方法。 – Ralph