当前位置: 首页 > 知识库问答 >
问题:

Spring声明性事务回滚失败,即使在声明回滚之后

何禄
2023-03-14

问题是,即使在为Exception.class声明回滚之后,事务仍然没有回滚。

1.我的数据源

<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
            <beans:property name="url" value="jdbc:mysql://localhost:3306/salesforce" />
              <beans:property name="username" value="root" />
            <beans:property name="password" value="root" />
            <beans:property name="defaultAutoCommit" value="false"/>
        </beans:bean>
<tx:annotation-driven transaction-manager="transactionManager"/>

<beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <beans:property name="sessionFactory" ref="sessionFactory" />
</beans:bean>
try{
    empRole = (EmployeeRole) session.get(EmployeeRole.class, roleId);
    div = (Division) session.get(Division.class, divId);
    area = (Area) session.get(Area.class, areaId);
    emp.setArea(area); 
    emp.setDivision(div);
    emp.setEmployeeRole(empRole);
    long employId = (Long) session.save(emp);

    cord = (Employee) session.get(Employee.class, emp.getEmployeeCoordinaterId());
    materialPath = cord.getMaterialPath()+"."+employId;       
    emp.setMaterialPath(materialPath);
    emp.setEmployeeId(employId);
    session.saveOrUpdate(emp);      
}
catch(Exception e){
    e.printStackTrace();
}

共有1个答案

洪高阳
2023-03-14

您缺少抛出异常,添加抛出E;在捕获块中。

catch(Exception e){
    e.printStackTrace();
    throw e;
}
 类似资料:
  • 我列出了一个问题“Spring事务失败回滚”。我有一个服务类,它调用2 DAO将数据插入到数据库表中。 我的事务配置: 我的服务和dao定义如下:

  • -ZJ 以下是我在Application.Properties中的数据源设置:

  • 本文向大家介绍java事务回滚失败问题分析,包括了java事务回滚失败问题分析的使用技巧和注意事项,需要的朋友参考一下 Spring-Java事物回滚失效处理最近在做项目中,无意间发现有个类在抛事物回滚操作,数据也正常的插入到数据库当中了,于是仔细查看看一下具体原因。 一切还是要从Java的检查型异常和非检查型异常说起。 那么什么是检查型异常什么又是非检查型异常呢? 最简单的判断点有两个: 1.继

  • 让我们想象一下这种情况,然后我们在微服务中使用SAGA方法管理分布式事务。 失败的场景: < li >服务A成功完成任务,并将消息发送给服务B < li >服务B成功完成任务,并将消息发送到服务C < li >服务C失败,并向服务B发送消息以撤消交易。 < li >服务B尝试撤消交易但失败。 因此,我们有不一致的数据,这是不可接受的。问题是,SAGA模式下事务回滚失败的情况如何处理?

  • 问题内容: 首先,我在StackOverflow上发现了很多与此相关的线程,但是它们都没有真正帮助我,所以很抱歉提出可能重复的问题。 我正在使用spring-test运行JUnit测试,我的代码如下所示 我的问题是我希望我的测试不影响其他测试。所以我想为每个测试创建类似回滚的内容。我为此进行了很多搜索,但到目前为止我什么都没找到。我为此使用Hibernate和MySql 问题答案: 只需在测试之上

  • 声明式事务, 可以脱离Trans类实现单个方法或多个的事务模板. 例如设置Service类所有insert开头的方法,均应用READ_COMMITTED事务 声明式事务,是通过aop拦截器做的, 而aop依赖ioc, 在@IocBy注解中启用即可. @IocBy(type=ComboIocProvider.class, args={"*json","org/nutz/mvc/testap