错误记录(一)

一、org.springframework.transaction.NoTransactionException: No transaction aspect-managed TransactionStatus in scope

这个错误是我在写测试的时候出现的,写的是@Transactional(rollbackFor = Exception.class)+TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();用的手动回滚。
后来改成了自动回滚就没事了。

查了一下发现有的人是没有手动回滚报这个错,其解释是:
在一段数据库操作中添加了事务注解@Transactional(rollbackFor = Exception.class),但是代码中有try catch所以相当于自己捕获,未往外抛,相当于没有异常,所以事务不起作用。建议手动回滚。

但是具体原因还有待发现,以下是参考:
org.springframework.transaction.NoTransactionException: No transaction aspect-managed TransactionSta
SpringBoot+Shiro引起事务失效、错误原因、解决方法

二、pom文件报错Failed to read artifact descriptor for org.springframework;spring-web:jar:5.1.8RELEASE

这个错是别人问我的,其实碰到包这些没下下来的问题,我都是重新下,不管是去文件下删了重新下、换镜像重新下还是去拷贝别人的包都可以。

这是其他的参考:pom文件报错Failed to read artifact descriptor for org.springframework;spring-web:jar:5.1.8RELEASE

如果你一直下不下来,换了镜像也是,那就得考虑是不是其他问题:
1.如果你点了这个离线模式,那你真是下了个寂寞:
错误记录(一)_第1张图片
2.也有可能公司换服务器,如果你一直用原来的私服地址下依赖的话也下了个寂寞;

三、mybatis报错The error occurred while setting parameters

这个错误就是要检查sql语句,可能原本语句没问题,但是参数有问题。

  1. 检查sql语句,最好的办法就是把sql语句复制到数据库查询一遍
  2. 检查id、入参、出参的类型的拼写是否正确
  3. 是否占用系统关键字,如user、name
  4. myabtis的参数是否是#{par}占位的,有的人会写成${par}
  5. mybatis如果用对象传参,是否是#{entity.par},以及对象内的正确的层级关系
  6. 有没有奇怪的符号,如 ` . , 等
  7. mysql的注释:#xxx和mybatis.xml的注释 不一样

我的错误原因是,标签里面忘了加separator=","。这个本来很好发现,但是我忽略了这个地方,总以为自己写的没问题,反而去其他地方找错误。

为什么会忽略呢?我把控制台打印的语句和参数都复制到Navicat执行发现没错。但是,控制台打印的list里面的参数是自动有个逗号。所以我用参数去替换问号的时候就直接忽略了逗号。

参考:mybatis报错The error occurred while setting parameters的解决办法

四、idea里面Mybatis的xml基础配置文件表名、字段、别名报红问题

原因:mapper.xml写语句的时候按alt+enter提示了一个use SQL啥的,也就是使用方言,一点就红。

解决:idea操作步骤:file->setting->Appearance & Behavior-> Languages & Frameworks -> SQL Dialects
把右边的Global SQL Dialect 的MySQL 设置为 None,然后Apply-> OK。

参考:idea里面Mybatis的xml基础配置文件表名、字段、别名报红问题的解决!
数据库方言(dialect)是什么?

JDK 11.0.2 compilation fails with javac NPE on anonymous parameterized class type inference

compiler message file broken: key=compiler.misc.msg.bug arguments=11.0.2, {
     1}, {
     2}, {
     3}, {
     4}, {
     5}, {
     6}, {
     7} java.lang.NullPointerException at
jdk.compiler/com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitApply(Flow.java:1235) at
jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1634) at
jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49) at
jdk.compiler/com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:398) at
jdk.compiler/com.sun.tools.javac.comp.Flow$FlowAnalyzer.visitVarDef(Flow.java:989)

代码在本地可以正常启动,在环境上跑就报这个错,因为jdk版本不同。我本地的是11.0.7(网上说11.0.7也有同样问题,但是我没有)。12是完全修复了。

代码是这样:new ParameterizedTypeReference<>(){}要改成new ParameterizedTypeReference(){}就都能跑。当然还有升级jdk的办法等其他:
错误记录(一)_第2张图片
参考:参考1,参考2

你可能感兴趣的:(java,mybatis,idea,java,mybatis,mysql,bug,数据库)