关于Spring声明式事务抛运行时异常时不回滚数据库

frank0 2012-07-08

昨日,本人学习spring整合hibernate,在声明式事务处理时遇到问题了,令我百思不得其解。

问题:在事务处理时抛了RuntimeException却没有回滚数据库,还是往数据库中插入了值

解决:今天在Google上找了半天,没有找到解决办法。我就想,是不是数据库的问题呢?就在网上找MySQL关于数据库回滚的问题,终于让我找到了

1.首先,查看你数据库中表的类型是否支持回滚命令为:showtablestatus;,我就发现在我的表类型为MYISAM,这种类型默认不支持回滚,而InnoDB支持

2.问题查出来了,现在怎么把类型改为InnoDB类型呢?在MySQL中输入命令:altertabletablenameengine=InnoDB;

好啦,大功造成了,再用Spring+hibernate抛运行时异常时果然回滚啦

相关推荐