luckystar +
send mail to luckystar sina weibo
关于订阅 luckystar's blog » Project »
分类:
标签:

在Service方法上加了如下注解:

Transactional(rollbackFor=Exception.class,timeout=30)

而且spring的事务管理配置也配置了。

在Service方法中有一个批量保存操作,一个更新操作。 在保存操作后,手动抛出了一个异常,发现事务没有回滚。

而且,我确定我用另外一个测试Service方法测试过,是OK的,事务会回滚。 那到底是何原因呢?

跟踪发现,是批量保存的问题。第一个保存是批量保存,跟踪代码发现在批量保存中重新开启了一个事物。

批量保存的代码如下:

//批量保存
public void batchSave(List<E> list){
    StatelessSession session = getSessionFactory().openStatelessSession();
    Transaction tx = session.beginTransaction();
    tx.begin();
    
    for(E e : list){
        session.insert(e);
    }
    
    tx.commit();
    session.close();
    
    logger.info("batch save success");
}
作者:qincidong
出处:http://qincidong.github.io/blog/2014/12/29/a-problem-when-use-spring-transaction-management.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
分类: 标签:
友荐云推荐