org.springframework.dao.DataIntegrityViolationException: Error attempting to get column 'createtime' from result set. Cause: java.sql.SQLDataException: Unsupported conversion from TIMESTAMP to java.lang.Byte
; Unsupported conversion from TIMESTAMP to java.lang.Byte; nested exception is java.sql.SQLDataException: Unsupported conversion from TIMESTAMP to java.lang.Byte
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:84)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
..........
一个很简单的SQL查询,sql是没有问题。但是 一直报错。。问题出在@Data这注解上。
原因:mybatis在 select * from table 然后映射到实体类的时候,会通过反射实例化,
在mybatis-3.5.0.jar 包中org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createByConstructorSignature(ResultSetWrapper, Class<?>, List<Class<?>>, List<Object>, String)这个方法 就是 通过构造函数实例化。但是有@Data注解,没有无参构造函数,只有全部参数的构造函数。。在sql的字段顺序和这构成函数顺序不一致,就会报错。
解决办法 :1、加上无参构造的注解。,或者自己写个无参构造函数,,mybatis在实例化对象的时候,(会选择第一个构造函数)
还有问题,就在无参构造函数上加上注解@AutomapConstructor 。。mybatis会选择带这个注解的构造函数