我已经将我的 Spring + Hibernate 项目配置为使用 Spring AOP 进行事务处理。
当我检查 DAO 方法时,TransactionSynchronizationManager.isActualTransactionActive()
它说是真的。
我从我的服务类中调用了两个 DAO 方法,在第二个 DAO 方法中,我'devide by zero'
故意抛出一个错误并查看这两个方法是否回滚。
目前第一个似乎插入一条新记录就好了。第一种方法不应该
回滚吗?
更新
您可以参考我之前的问题,但我认为这可能太长了。
Spring 3.x 和 Hibernate 4 中的事务管理
总结这个问题(尽我所能),
我有一个服务类方法,它从 DAO 类中调用两个方法。
该服务类是从 spring mvc 控制器及其委托者调用的。
我的 aop:config 如下
<aop:config proxy-target-class="true">
<aop:pointcut id="transactionalServiceOperation" expression="execution(* kr.co.sgis.services.web.cooingbee.Crudable.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionalServiceOperation"/>
</aop:config>
我的界面 Crudable 看起来像这样
public interface Crudable {
public int delete(CooingbeeFetchable bean);
public int save(CooingbeeFetchable bean);
public int update(CooingbeeFetchable bean);
public Set<CooingbeeFetchable> list(CooingbeeFetchable bean);
public CooingbeeFetchable get(int id);
public int count(CooingbeeFetchable bean);
public int save2(CooingbeeFetchable bean);
}
DAO 和 Service 类都实现了 Cruadable 接口。现在我想也许这就是它没有按我预期工作的原因?
希望我给了你足够的信息而不会太长:)