关于SSM项目注解事务不回滚的问题
<!--扫描service包(包含子包)下所有使用注解的类型-->
<context:component-scan base-package="com.song.ssm.service"/> <!--配置事务管理器(mybatis采用的是JDBC的事务管理器)-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean> <!--配置基于注解的声明式事务,默认使用注解来管理事务行为-->
<tx:annotation-driven transaction-manager="transactionManager"/>
xml配置如上
1.添加声明式事务配置
然后在service.impl层测试抛出异常,回滚操作的数据,在方法上添加注解
@Transactional(rollbackFor=Exception.class)//作用是当前方法抛出rollbackFor指定的异常类时则回滚
2.发现抛出异常后,操作的数据未回滚,开始查找原因
尝试手动回滚数据
Venue venue = new Venue();
venue.setShowflag(1);// 测试修改数据
try {
updateByPrimaryKey(venue);
String string = "abc";
Integer.valueOf(string);
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动开启事务回滚
throw new RuntimeException();
}
发现依旧未回滚操作数据
3.检查数据库表引擎

发现数据表引擎是MyISAM,查找了一下引擎之间的关系,如下

然后得知我们要求处理事务则必须使用INNODB或者BERKLEYDB,然后用sql语句将表修改为INNODB,ALTER TABLE `Venue` ENGINE = `InnoDB
修改后我再次尝试抛出异常回滚代码,回滚机制生效了,被操作的数据没有持久化到数据库中
4.总结
由于数据库引擎的限制,MyISAM引擎没有对事务处理的能力,将表的引擎切换到INNODB后,才支持对事务的处理
关于SSM项目注解事务不回滚的问题的更多相关文章
- spring + myBatis 常见错误:注解事务不回滚
最近项目在用springMVC+spring+myBatis框架,在配置事务的时候发现一个事务不能回滚的问题. 刚开始配置如下:springMVC.xml配置内容: spring.xml配置内容 从上 ...
- spring@Transactional注解事务不回滚不起作用无效的问题处理
这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚.后来终于找到了原因. 如果你也出现了这种情况,可以从下面开始排查. 一.特性先来了解一下@Transaction ...
- @Transactional注解事务不回滚不起作用无效
写在前面 数据库Mysql8.0 添加@Transactional注解后事务并未起作用. 修改表的引擎后ok了.(详看下面转载内容) ================================ ...
- springboot2.X版本得@Transactional注解事务不回滚不起作用
参考文章 https://my.oschina.net/happyBKs/blog/1624482 https://blog.csdn.net/u011410529/article/detail ...
- 记录一次Spring boot 搭建框架连接Mysql数据库注解事务不回滚的故障
搭建了一个新框架,使用了spring boot 替换以简化原来繁杂的spring配置,使用Spring注解管理事务,持久层使用mybatis. 连接mysql数据库完成项目的过程中发现不支持事务,因为 ...
- spring + mybatis 注解式事务不回滚的原因分析 @Transactional
在一个项目中发现spring的事务无法回滚. DEBUG: org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.ses ...
- Spring,SpringMvc配置常见的坑,注解的使用注意事项,applicationContext.xml和spring.mvc.xml配置注意事项,spring中的事务失效,事务不回滚原因
1.Spring中的applicationContext.xml配置错误导致的异常 异常信息: org.apache.ibatis.binding.BindingException: Invalid ...
- springmvc注解式事务手动回滚
Spring的AOP事务管理默认是针对unchecked exception回滚(运行期异常,Runtime Exception),如果希望手动控制事务的回滚,可以通过 TransactionAspe ...
- Spring事务异常回滚,捕获异常不抛出就不会回滚(转载) 解决了我一年前的问题
最近遇到了事务不回滚的情况,我还考虑说JPA的事务有bug? 我想多了....... 为了打印清楚日志,很多方法我都加tyr catch,在catch中打印日志.但是这边情况来了,当这个方法异常 ...
随机推荐
- CKEditor的使用
需要配置的功能列表 //class: cke_button( 按钮 ) , ck_combo(下拉) /* 需要配置的功能列表 document:保存(save).新建(newpage).预览(pre ...
- Popularize what is heart of mobile phone?
From: http://tech.sina.com.cn/mobile/n/2014-09-29/08399657494.shtml 只谈核数没意义 带你重新认识手机SoC 2014年09月29日 ...
- C++ 输出菱形
输出*号组成的菱形: // print.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> ...
- 【PIC单片机】MPLAB X IDE快速入门指南
引言:近期由于项目实践需要,开始动手学习相关硬件知识.从PIC单片机入手. 单片机学习核心要点:查数据手册 配置寄存器 一.基于MPLAB X IDE配置位设置 MPLAB X IDE和MPLAB I ...
- C# xml转换成ini格式
最近一直在写一个关于自动转换文件格式的代码,一点小心得. 目标xml文件内容,我的命名是data2.xml <?xml version="1.0" encoding=&quo ...
- 【Leetcode】【Easy】Length of Last Word
Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...
- 再学UML-Bug管理系统UML2.0建模实例(二)
2.3 BMS顺序图(需求模型) 在UML中,我们将顺序图分为两类,一类用于描述系统需求,构造系统的需求模型(分析模型):另一类用于指导设计与实现,构造系统的实现模型(设计模型). ...
- Mrach 9 2017 Week 10 Thursday
There is a kind of beauty in imperfection. 有一种美叫做不完美. Every thing, every one, in the world, is not p ...
- C语言 返回指针的函数
#include <stdio.h> char * test() { return "itcast"; } int main(int argc, const char ...
- Android(java)学习笔记33:注册广播接收者
1. 下面我们先看一部分代码,由代码进行进一步的深入: registerReceiver( new BroadcastReceiver() {//onReceive中代码的执行时间不要超过5s,and ...