Deug 2016-11-03 08:43 采纳率: 11.1%
浏览 1038
已结题

用spring和hibernate进行事务管理,回滚出问题了,请求大神帮忙,送分题

用spring进行事务管理,现在要执行数据保存的操作,要同时向两个表保存,一个主表一个从表,已经用hibernate关联了起来,session.save(kpgl)是一起向两个表进行存储的,数据库存储数据的时候,从表保存出现错误,主表依然存入了数据,事务并没有回滚。下面是代码和配置

 @Override
    public void save(List<KPGL> pKpglList, Result pResult) throws Exception {
        Session session = null;
        try {
            session = this.getSessionFactory().openSession();
            for(KPGL kpgl: pKpglList) {
                session.save(kpgl);
            }
        }
        catch(Exception e) {
            this.log.info(e.getMessage(), e);
            pResult.setCode(_mDbErrorCode);
            pResult.setMessage(_mDbErrorMess);
            throw e;
        }
        finally {
            if(session != null) {
                session.close();
            }
        }
    }

配置事务管理

 <!-- 事务管理 -->
    <tx:advice id="txAdviceDao" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="save" propagation="REQUIRED" read-only="false" rollback-for="Exception"/>
            <tx:method name="update" propagation="REQUIRED" read-only="false" rollback-for="Exception"/>
        </tx:attributes>
    </tx:advice>
    <aop:config>
        <aop:pointcut id="myPointcutDao" expression="execution(* com.aisino.dao.impl.*.*(..))"/>
        <aop:advisor advice-ref="txAdviceDao" pointcut-ref="myPointcutDao"/>
    </aop:config>
  • 写回答

1条回答 默认 最新

  • cainiy 2016-11-03 13:11
    关注

    不知道是不是下面这个问题
    在映射文件中***.hbm.xml中set标签中cascade属性设置成sava-update或all

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog