springboot获取active_springboot 2.3.0+activeRecord获取对象报类型转换错误
场景:业务表里有一个字段is_delete,Model自动生成后该字段是一个布尔类型: `is_delete` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否删除:1,是;0,否'
框架使用的是springboot + activeRecord
spring-boot-starter-parent使用低版本如2.1.3.RELEASE,使用dao.findFirst时候一切正常,返回的对象中is_delete是布尔型
下面问题来了,当spring-boot-starter-parent使用高版本如2.3.0.RELEASE的时候,问题出现了。返回的对象中is_delete是数字0,不是布尔型,导致类型转换报错。
尝试解决:
经过调试发现com.jfinal.plugin.activerecord.generator.MetaBuilder类中以下地方有差别if (typeStr == null) {
String colClassName = rsmd.getColumnClassName(i);
typeStr = typeMapping.getType(colClassName);
}
对于colClassName,低版本的springboot环境中获取到的是java.lang.Boolean,高版本是java.lang.Integer。
对于rsmd对象进行打印后,
低版本中是这样:com.mysql.cj.result.Field@53499d85[catalog=jtxxh,tableName=sys_department,originalTableName=sys_department,columnName=is_delete,originalColumnName=is_delete,mysqlType=1(FIELD_TYPE_BIT),sqlType=-7,flags= UNSIGNED, charsetIndex=63, charsetName=ISO-8859-1]
高版本中是这样:com.mysql.cj.result.Field@780ec4a5[dbName=jtxxh,tableName=sys_department,originalTableName=sys_department,columnName=is_delete,originalColumnName=is_delete,mysqlType=1(FIELD_TYPE_TINYINT UNSIGNED),sqlType=-6,flags= UNSIGNED, charsetIndex=63, charsetName=ISO-8859-1]
从上面的打印看,高版本环境下对于mysqlType的判断更加准确,是什么导致的呢?嘿嘿,经过仔细分析和观察,mysql驱动版本不一样。高版本的springboot自带的是8.0.20,而低版本自带的是8.0.15。
之前对于mysql驱动的引入是这么写的:
mysql
mysql-connector-java
他的版本号由springboot的版本号决定。所以如果要解决上述问题,就是让is_delete字段保持之前的布尔型,只要显式的指定mysql版本号即可。
springboot获取active_springboot 2.3.0+activeRecord获取对象报类型转换错误相关推荐
- android 动态获取权限有哪些,Android 6.0+ 动态获取权限
Android 6.0+ 动态获取权限 这里有一个现成的库,可以直接拿来用.方便简单 1.向app下的gradle添加依赖: dependencies{ // android 6.0+ 动态获取权限 ...
- pandas使用groupby.first函数、groupby.nth(0)函数获取每个组中的第一个值实战:groupby.first函数和groupby.nth函数对比(对待NaN的差异)
pandas使用groupby.first函数.groupby.nth(0)函数获取每个组中的第一个值实战:groupby.first函数和groupby.nth函数对比(对待NaN的差异) 目录
- iOS6.0下获取通讯录用户列表
2019独角兽企业重金招聘Python工程师标准>>> 自iOS6.0后获取通讯录列表需要询问用户,经过用户同意后才可以获取通讯录用户列表.而且ABAddressBookRef的初始 ...
- Asp.net 2.0 中获取控件输出的Html代码 (转)
将Asp.net 控件的呈现html获取,在不少场合会用到,比如生成静态页时 以下代码选自 Asp.net 2.0 高级编程 转自:Asp.net 2.0 中获取控件输出的Html代码 public ...
- android动态mac地址,Android 版本兼容 — Android 6.0 和 7.0后获取Mac地址
Android 6.0 和 7.0后获取Mac地址 随着Android的版本迭代,获取设备的Mac地址也发生了改变.这里找到了最新的适配方案(适配当前的最新版本Android 9.0),并且记录了整个 ...
- 怎么免费获取帆软9.0激活码,帆软8.0激活码,如何激活
FineReport作为领先的企业级Web报表一直致力于解决中国式报表应用难题,它有两个版本:个人免费版,企业收费版.帆软公司对免费版用户非常友好,下面就来介绍一下怎么免费获取帆软9.0激活码,帆软8 ...
- 关于Android 8.0/9.0 之后获取wifi名称为空的解决方法
今天连接硬件设备的时候,需要用到wifi名和密码来进行绑定配对.在获取wifi名的时候,意外发现为空.于是就开始找寻解决方案. 后来找到这么一篇文章: Android获取WIFI 的ssid 方法适配 ...
- 【django】用户登录模块实现步骤(二)之QQ登录工具AgentLogin和通过OAuth2.0认证获取openid【33】
一.QQ登录工具AgentLogin 1.AgentLogin介绍 ⽬前只⽀持 腾讯QQ,微信,微博的第三⽅登录 该⼯具封装了QQ登录时对接QQ互联接⼝的请求操作.可⽤于快速实现QQ登录功能. 2.A ...
- 如何在24小时内0成本获取到25000+精准粉丝的?
今天看到一篇干货分享文章:<如何在24小时内0成本获取到25000+精准粉丝的?>,阿泽特意分享出来,希望对大家有帮助.好了,上干货: 前言:最近做了一个公众号,试水推了一个分享链接得资源 ...
- Java微信公众平台开发(十六)--微信网页授权(OAuth2.0授权)获取用户基本信息
转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静 ...
最新文章
- the folder is already a source folder.
- element-ui upload组件上传图片时限制图片宽高
- 转android项目开发 工作日志 2011.10.8--onConfigurationChanged屏幕改变事件
- SpringBoot - 优雅的实现【业务校验】高级进阶
- Dockerfile: no such file or directory
- SAP Cloud for Customer Cloud Application Studio的一些使用技巧(持续更新)
- 体育赛事中的概率计算问题
- React ant design UI 禁用 启用 switch 开关 加弹窗确认提示 代码片段
- linux puppy 安装软件,小芭比linux下载
- 转 - DataGuard中如何配置LOG_ARCHIVE_DEST_n参数
- 选择阿里云服务器的理由
- 使用多种AI算法玩方格迷宫——基于Value的RL算法 【开源】
- ubuntu18.04 安装java
- 笔记本电脑切换不到投影仪 问题 解决方法
- 100G QSFP28 CLR4单模光模块的介绍及对比
- SQL Server 2005 高速下载
- Java web p41
- 为PANDA制作的DWI按扫描次数分类的toolkit
- MIMIC IV数据库安装(二)
- excel数据可视化销售报表案例--根据某平台提供的明细数据及需求制作的一份销售报表案例
热门文章
- (转)黄金交易革命即将到来?区块链技术让你像刷卡一样“刷黄金”
- Julia :迎接0.6的到来
- Julia: 关于Github上的其它库
- 人工智能︱腾讯如何利用英特尔至强处理器在游戏内创建购买推荐系统?
- 【手写数字识别】基于matlab GUI BP神经网络手写数字识别系统【含Matlab源码 1639期】
- 【数字信号】基于matlab GUI虚拟信号发生器(各种波形)【含Matlab源码 271期】
- 【TWVRP】基于matlab蚁群算法求解带时间窗的多中心车辆路径规划问题【含Matlab源码 112期】
- java适配器模式_java设计模式之适配器模式
- 软件蓝图设计_智能企业的设计蓝图
- 动态规划: 数字三角形