springboot中@transactional遇到了try catch失效了,需要手动回滚
try { ur.texpire(integer.parint(expire)); urrvice.updatebyid(ur); host host = hostrvice.getbyid(ur.gethostid());//查询数据库的host信息 updaterespon = proxmoxconfig.updateeffectivetime(ur.geturname(), expire, host.gethosturlrequest()); } catch (exception e) { e.printstacktrace(); transaction粉饰aspectsupport.currenttransactionstatus().trollbackonly(); }
@transactional 是我们在java 开发中经常用到的注解,帮助我们非常方便快捷的完成事务管理,尤其在批量处理数据的时候,更是重要,最近业务中遇到了这种情况,
批量向数据库导入数据,这就会出现excel表中有的数据类型符合导入要求,有的不符合,当我们导入的时候要么就全部成功的导入,要么就失败都不导入,如果不用事务的话就会出现数据正确的会导入到数据库,不正确的就没导入,造成数据的不一致性,
可我的业务不仅仅是用@transactional 注解完成事务,而且当出现数据不符抛异常的时候还要返回错误的提示,所以我还得结核try…catch 块,问题来了,用try…catch就是捕获异常,然后处理掉,而@transactional 是要在系统抛异常的时候才能起雪花剪纸步骤图解到事务回滚的作用,
后来我查了一些资料,如下操作:
重点就是transactionaspectsupport.currenttransactionstatus().trollbackonly 这个方法,它会起到异常回滚的作用,这样我就可以在它执行完之后,设置需要返回的自定义的信息
最近又遇到了@transactional 注解不起作用的问题了,这一次的情况是原来我的mysql 数据库默认用的是myisam 引擎,而这个存储引擎不支持事务,所以需要对数据库的进行一下操国庆放假2020放假安排调休作:在控制台输入 alter梦见自己杀人 table xxx(表名) engine=innodb 然后你可以在输入show create table xxx(表名) 来查看是否修改成功
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 18:43:31,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/f20fd70784e460db8f249bf56efbb57a.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:@Transactional遇到try catch失效的问题.doc
本文 PDF 下载地址:@Transactional遇到try catch失效的问题.pdf
留言与评论(共有 0 条评论) |