我正在尝试在 Spring+Struts+Hibernate 设置中实现声明性事务管理。这是我的 applicationcontext.xml 的一部分
<property>
<props>
<prop key="foodoo*">PROPAGATION_REQUIRED,-FooException</prop>
</props>
</property>
我在 FooService 类中定义了两个公共方法 -> UpdateFoo、foodooTest 和两个私有方法(具有更新逻辑) -> 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。
我不确定我在这里缺少什么。