【发布时间】:2011-11-04 10:37:54
【问题描述】:
我正在尝试在 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。
我不确定我在这里缺少什么。
【问题讨论】:
-
你应该发布更多相关的suff:spring配置和触发事务的方法。
标签: java hibernate spring transactions declarative