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

用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个回答

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐