Unsupported conversion from * to *

在使用mybatis时,出现数据转换异常

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: Error attempting to get column ‘create_time’ from result set. Cause: java.sql.SQLDataException: Unsupported conversion from TIMESTAMP to java.lang.Long
; Unsupported conversion from TIMESTAMP to java.lang.Long; nested exception is java.sql.SQLDataException: Unsupported conversion from TIMESTAMP to java.lang.Long] with root cause

com.mysql.cj.exceptions.DataConversionException: Unsupported conversion from TIMESTAMP to java.lang.Long

问题分析

检查发现是由于缺少无参构造方法导致的。mybatis默认先使用默认构造方法构造对象,然后再用的getter和setter来完成实体类和表的映射。如果不存在无参构造方法,则按顺序映射数据库表的和实体类的构造方法的参数,而忽略字段名,因此会误将id赋值给downLinkData,将create_time赋值给upLinkData,导致抛出Unsupported conversion from TIMESTAMP to java.lang.Long。


解决方案

以下三种方法都能解决

1.新增一个无参构造方法

2.新增一个包含所有成员变量的构造方法

3.删除原来的构造方法

绿色方框即是包含所有成员变量的构造方法


已发布

分类

作者:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注