记录:解决Method oracle/jdbc/driver/OracleResultSetImpl.getObject is abstract问题亲测有效
Posted bug菌¹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录:解决Method oracle/jdbc/driver/OracleResultSetImpl.getObject is abstract问题亲测有效相关的知识,希望对你有一定的参考价值。
👨🎓作者: bug菌
✏️博客: CSDN、 掘金、 infoQ、 51CTO等
🎉简介:CSDN、 掘金等社区优质创作者,全网合计7w粉+,对一切技术都感兴趣,重心偏Java方向,目前运营公众号「 猿圈奇妙屋」,欢迎小伙伴们的加入,一起秃头,一起变强。
..
✍️ 温馨提醒:本文字数:2099字, 阅读完需:约 5 分钟
一、前言🔥
小伙伴们在批阅文章的过程中如果觉得文章对您有一丝丝帮助,还请别吝啬您手里的赞呀,大胆的把文章点亮👍吧,您的点赞三连(收藏⭐+关注👨🎓+留言📃)就是对bug菌我创作道路上最好的鼓励与支持😘。时光不弃🏃🏻♀️,创作不停💕,加油☘️
二、环境说明🔥
环境:Springboot2.3.1.RELEASE +Oralce 11.2.0.3 + Mybatis-plus3.2.0
三、问题描述🔥
通过使用mybatis-plus提供的代码生成器MyGenerator进行对于表生成,结果重启项目发现接口文档请求接口报错,具体报错如下异常堆栈error:
java.lang.AbstractMethodError: Method oracle/jdbc/driver/OracleResultSetImpl.getObject(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; is abstract
如下是error部分拍照截图:大家请看
四、报错排查🔥
可能大家第一眼都会跟我一样被当前的异常堆栈信息所迷惑,觉得是自己的Oracle驱动版本可能有问题!但仔细测试你会发现,除了刚生成的类有该报错外,其余的类映射查询一切正常,这说明什么问题?
oracle依赖包没有问题,那还可能是啥问题?
经过仔细排查,发现通过使用MyGenerator
生成实体类对象,但Oracle数据库字段类型为DATE类型时,它会自动转成LocalDateTime 类型,具体如下截图:
总结:最大的问题就在于此,在做字段映射时所发生异常,导致此报错。
为什么?为什么?为什么?
因为在mysql数据库中,既有date类型也有datetime类型;而Oracle数据库中的date类型和mysql的date类型是不一样的,Oracle的date类型时间格式为YYYY-MM-DD hh:mm:ss和mysql中的datetime类型匹配, 而 mysql 的ddate类型时间格式为 yyyy-mm-dd。
但你用LocalDateTime类型去映射Date类型时,mp在高版本上就无法进行映射处理导致报错,网上还看到一种结论就是降低mp的版本,这个我没尝试过,你们可以替我试试。
所以当你数据库设置的字段类型为DATE时,实体类型最好设置成Date(java.util.Date)
五、解决方案🔥
所以解决方案是什么?很简单!我们只需要将LocalDateTime类型改成Date(java.util.Date)类型即可!演示截图如下:
六、文末🔥
我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!
感谢认真读完我博客的铁子萌,在这里呢送给大家一句话,不管你是在职还是在读,绝对终身受用。
时刻警醒自己:
抱怨没有用,一切靠自己;
想要过更好的生活,那就要逼着自己变的更强,生活加油!!!
以上是关于记录:解决Method oracle/jdbc/driver/OracleResultSetImpl.getObject is abstract问题亲测有效的主要内容,如果未能解决你的问题,请参考以下文章
记录:解决Method oracle/jdbc/driver/OracleResultSetImpl.getObject is abstract问题亲测有效
记录:Need to invoke method ‘insertUser‘ declared on target class ‘XxxServiceImpl‘...解决方案
记录:Need to invoke method ‘insertUser‘ declared on target class ‘XxxServiceImpl‘...解决方案
Dubbo服务调用Failed to invoke the method错误记录
java.lang.AbstractMethodError: Method com/mysql/jdbc/ResultSet.isClosed()Z is abstract 报错修改记录