当前使用版本(必填,否则不予处理)
该问题是如何引起的?(确定最新版也有问题再提!!!)
ServiceImpl 实现类中的方法需要 @Transactional 事务支持,但我看到使用的 IService 接口 方法已经标注了 @Transactional 注解,原以为不用再标注,便推送代码并部署。可部署后查看日志发现报错事务未开启,查阅资料后发现 @Transactional 标注在接口上是不会生效的,需要标注在实现类上,那 IService 接口中的 @Transactional 注解有何作用?如果无用的话可能造成误导。
重现步骤(如果有就写完整)
Service 接口中写一个批量删除方法 -> ServiceImpl 实现该方法 -> ServiceImpl 实现的方法应该标注 @Transactional,但看到 IService 中的 removeBatchByIds 方法已经标注,如果 removeBatchByIds 上的注解生效,则应该不需要再标注 -> 日志报错事务未生效
报错信息
2023-03-05 09:31:11.497 WARN 1 --- [http-nio-8080-exec-10] p.p.b.service.impl.MessageServiceImpl : SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@52afae37] Transaction not enabled
Comment From: huayanYu
自己加下事务, 有的代理是支持接口的