「已注销」 2016-11-26 13:11 采纳率: 0%
浏览 1678
已结题

Hibernate 嵌套事务,大神请进!

Hibernate、Spring整合,使用HibernateTransactionManager事务管理器,在使用nested嵌套事务的时候,子事务出错时回滚到savepoint,但是Hibernate并没有把出错的操作移除,导致主事务提交的时候session flush又报错,最终主事务和子事务都回滚了。

环境:Spring3.0.2,Hibernate3.6.0,Mysql5.6;

异常是null id in Album entry (don't flush the Session after an exception occurs)【这个是我自己让它报错的,数据库非空校验不过】,
并不是Transaction rolled back because it has been marked as rollback-only。
代码逻辑大致如下:

 ServiceA {
    @Transactional(propagation = Propagation.NESTED)
    @Override
    public void error() throws Exception {
        A a = new A();
        aDao.save(a);
    }
}

ServiceB {
    @Transactional(propagation = Propagation.REQUIRED)
    @Override
    public void success() throws Exception {
        B b = new B();
        b.setName("456"); 
        bDao.save(b);
        try {
            aService.error();
        } catch (Exception e) {
        // 这里调用的是ServiceA的error,这是不是Dao,目的用于测试嵌套事务。
        }
    }
}
  • 写回答

2条回答 默认 最新

  • devmiao 2016-11-26 14:59
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题