`
jerryqiu007
  • 浏览: 230941 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring 事务不回滚的解决办法

    博客分类:
  • JAVA
阅读更多

Spring 事务不回滚的问题关键是:不能对该异常用try...catch处理,否则不会回滚事务!

 

还有几种可能:

  1. 表不支持支持事务,mysql下必须为InnoDB
  2. mysql为绿色版的缘故,改装正式版试试
  3. 待补充。。

 

@Service("systemConfigService")
public class SystemConfigServiceImpl extends AbstractGenericService<SystemConfig> implements SystemConfigService {
	
	@Resource(name="systemConfigDAO")
	private SystemConfigDAO systemConfigDAO;	
	
	@Override
	public void deleteByIds(String id) {
		if(id != null){
			String[] ids = id.split(",");
			try {
				SystemConfig systemConfig = systemConfigDAO.get(2);
				systemConfig.setValue("测试值");
				systemConfigDAO.update(systemConfig);
				
				// 执行如下操作,数据库将报唯一索引重复问题
				// Caused by: java.sql.BatchUpdateException: Duplicate entry 'PORTAL.CITYCODE' for key 'name'
				SystemConfig systemConfig2 = systemConfigDAO.get(2);
				systemConfig2.setName("PORTAL.CITYCODE");
				systemConfigDAO.update(systemConfig2);
			} 
			catch (Exception e) {
				log.error(e);
				// 如果注释掉throw new RuntimeException,那么事务将不能回滚,因为spring捕捉不到Exception
				// 解决办法,去掉try catch,或者在cache中抛出异常以便spring捕获
				throw new RuntimeException("运行时出错!"); 
			}
		}
	}
}
分享到:
评论
2 楼 peterandy110110 2013-03-11  
我用在catch里面写了 throw new RuntimeException("运行时出错!");   但是好像不行诶,还是没有回滚,而且异常好像也没抛出来。
1 楼 lyht617214 2012-05-16  
总结得很详细,今天一不小心用try...catch处理,导致事物不回滚,是这篇文章提醒了我,thanks!

相关推荐

    spring 简单实例 事务回滚

    总之,这个“spring简单实例 事务回滚”案例为我们提供了一个学习Spring事务管理的好起点。通过理解如何配置事务管理器,使用`@Transactional`注解,以及异常处理机制,我们可以更好地掌握Spring如何保证数据的一致...

    Spring+Mybatis整合事务回滚

    花了一晚上时间终于搞出来了Spring整合Mybatis事务回滚(Mysql数据库),控制Service层中的多次插入操作,多次操作整体是一个事务。 里面有缘嘛和jar包,资源为war包,导入即可。运行Test类中的测试代码即可。 建表...

    Spring/SpringMVC/MyBatis整合+事务回滚

    在"Spring/SpringMVC/MyBatis整合+事务回滚"的主题中,我们将深入探讨如何将这三个框架整合起来,并实现事务的回滚功能。 首先,Spring框架是核心,它提供了依赖注入(DI)和面向切面编程(AOP)的能力,使得代码更...

    Spring事务管理A方法内部调用B方法的回滚问题测试代码

    在Spring框架中,事务管理是核心特性之一,用于确保数据操作的一致性和完整性。当一个方法(A方法)内部调用另一个方法(B方法)时,可能会遇到事务控制...这个示例代码对于理解和调试Spring事务管理的问题非常有帮助。

    spring事务异常回滚实例解析

    首先,Spring 默认只有在遇到未捕获的 `RuntimeException` 或其子类时才会触发事务回滚。这意味着,如果在业务代码中对异常进行了捕获并处理,而没有再抛出异常,那么事务将不会自动回滚。例如,在提供的代码实例中...

    子线程任务发生异常,主线程事务如何回滚

    子线程任务发生异常,主线程事务如何回滚? 本文将详细探讨当子线程任务发生异常时,如何让主线程捕获到该异常并进行事务的回滚。下面将从多线程编程的基础知识、线程池的使用、异常捕获三个方面进行阐述。 一、多...

    完美解决Spring声明式事务不回滚的问题

    Spring事务管理操作方法 ------------------------ 在Spring中,事务管理操作方法可以分为两种:编程式的事务管理和声明式的事务管理。编程式的事务管理是通过手动编写代码来管理事务,而声明式的事务管理是通过...

    spring-控制事物回滚

    我们将深入探讨Spring事务管理的原理、API使用以及在实际开发中的应用。 首先,Spring事务管理有编程式和声明式两种方式。编程式事务管理通过`PlatformTransactionManager`接口和`TransactionDefinition`接口来实现...

    Spring Boot多数据源(支持Spring声明式事务切换和回滚).pdf

    - 提供了跨数据源的事务回滚能力,简化了系统设计,降低了处理多数据源时的复杂性。在除了分布式事务外的大多数情况下,只需考虑这个机制,就能保证事务的正确性。 在多租户SaaS架构中,数据隔离至关重要。常见的...

    MySql事务无法回滚的原因有哪些

    MySQL事务无法回滚的情况可能由多种因素引起,尤其是在配置如Hibernate、Spring或JDBC等框架时,如果一切看似正常,但事务处理仍然失效,我们应当深入检查数据库本身的特性和设置。首要的问题通常与所选用的表类型...

    Spring中@Transactional事务回滚(含实例

    在Spring框架中,`@Transactional`注解是用于标记事务管理的重要工具,它使得开发者能够方便地在代码中声明式地控制事务的...通过实例分析和源码阅读,我们可以更深入地理解Spring事务管理机制,提升我们的编程技能。

    SpringBoot事务使用及回滚实现代码详解

    事务是指一组操作的集合,作为一个单元执行,如果其中任何一个操作失败,则整个事务回滚,保证数据的一致性。 在SpringBoot中,事务的使用需要在启动类上添加@EnableTransactionManagement注解,以开启事务支持。...

    mongoDB 4.0事务回滚的辛酸历程探究

    事务回滚是事务处理中的关键部分,确保在出现错误或异常时,数据库能够恢复到事务开始之前的状态。 在升级到MongoDB 4.0之后,首先需要注意的是确保环境的兼容性。使用Homebrew升级MongoDB到4.0.0版本,同时更新`...

    4.Spring中的JdbcTemplate,Spring中的的事务,

    #### Spring事务控制的基础概念 Spring框架支持两种类型的事务管理:编程式事务管理和声明式事务管理。 - **编程式事务管理**:通过编码的方式来管理事务,适用于需要细粒度控制的情况。 - **声明式事务管理**:...

    Spring事务管理只对出现运行期异常进行回滚

    标题中提到的“Spring事务管理只对出现运行期异常进行回滚”这一特性是基于Java异常处理机制的。在Java中,异常分为两种类型:运行时异常(RuntimeException及其子类)和检查异常(CheckedException)。运行时异常是...

    Spring事务流程图

    Spring事务管理是Spring框架的核心特性之一,主要用于处理应用程序中的数据一致性问题。在Spring中,事务管理分为编程式和声明式两种方式。本篇文章将详细解释Spring事务管理的流程,以及如何通过时序图来理解这一...

    Spring事务管理Demo

    Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 ...

    Spring事务传播机制.docx

    当我们在使用 Spring 所提供的事务功能时,如果是仅仅处理单个的事务,是比较容易把握事务的提交与回滚,不过一旦引入嵌套事务后,多个事务的回滚和提交就会变得复杂起来,各个事务之间是如何相互影响的,是一个值得...

    spring事务案例分析.zip

    7. **案例分析**:"SPRING事务管理案例分析.docx"很可能包含了具体的项目实例,详细讲解了如何在Spring项目中配置和使用事务管理,以及如何解决实践中遇到的问题。而"studyspring"可能是源代码目录,包含了实现这些...

Global site tag (gtag.js) - Google Analytics