本文主要是介绍MyBatisPlus异常:Cannot determine value type from string,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
异常详情
一个非常普通的分页查询操作,出现如下异常:
2024-03-21 14:51:17.501 ERROR 6 --- [ XNIO-1 task-4] c.m.f.c.s.h.GlobalBizExceptionHandler : 全局异常信息 ex=Error attempting to get column 'goodsName' from result set. Cause: java.sql.SQLDataException: Cannot determine value type from string '测试111'
; Cannot determine value type from string '测试111'; nested exception is java.sql.SQLDataException: Cannot determine value type from string '测试111'
问题分析
通过搜索引擎查询到这种异常出现的主要原因是:SQL查询的字段与resultType属性指定对象类的字段不一致。
鉴于此,笔者认真核对了SQL语句和resultType指定的实体类GoodsBO属性,发现goodsName字段是一致的,且是没有歧义的。
再仔细查看GoodsBO的定义,发现使用了注解@Builder和@Data,没有其他关于构造函数的注解了。而MybatisPlus将查询结果映射为对象,是通过调用对象类的无参构造函数实现的。想到这里,问题原因显而易见了:GoodsBO类没有无参构造函数。
问题解决方案
在GoodsBO类上增加注解@NoArgsConstructor和@AllArgsConstructor。
参考文档
- 《使用@Builder导致的无法创建无参构造方法》
这篇关于MyBatisPlus异常:Cannot determine value type from string的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!