【BUG】解决SSH2中@Transactional没有回滚,事务处理没有起作用

这篇博客主要探讨了SSH2框架下@Transactional事务管理不起作用的问题。首先,作者检查了数据库引擎,从MyISAM改为InnoDB,但问题未解决。接着,作者审视了配置并发现Spring默认只对运行时异常进行回滚,而自定义的LogicException是checked异常,导致事务不回滚。解决方法是适当地处理这类异常以触发事务回滚。
摘要由CSDN通过智能技术生成

1.首先是考虑是否是数据库引擎的问题
因为我用的mysql,数据库的引擎是MyISAM,修改为InooDB。代码:

#看你的mysql现在已提供什么存储引擎:
mysql> show engines;
#看你的mysql当前默认的存储引擎:
mysql> show variables like '%storage_engine%';
#修改默认引擎
vim /etc/my.cnf
#没有my.cnf去复制
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
#添加
default-storage-engine=InnoDB/MyISAM
#重启数据库服务:
service mysqld restart

修改好后测试,依然无效
2.检查配置
3.看异常是什么类型
Spring默认情况下会对运行期异常(RunTimeException)进行事务回滚。这个异常是unchecked,如果遇到checked意外就不回滚。
我的问题就出在这里,因为我自己定义了一个LogicException,处理办法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值