无法转换为内部表示
转换 无法 内部 表示
2023-09-27 14:28:52 时间
系统查询表记录时出现“java.sql.SQLException: 无法转换为内部表示”异常,抛出的异常信息如下:
Stacktrace follows:
java.sql.SQLException: 无法转换为内部表示
at oracle.jdbc.driver.CharCommonAccessor.getLong(CharCommonAccessor.java:297)
at oracle.jdbc.driver.T4CVarcharAccessor.getLong(T4CVarcharAccessor.java:852)
at oracle.jdbc.driver.OracleResultSetImpl.getLong(OracleResultSetImpl.java:971)
at oracle.jdbc.driver.OracleResultSet.getLong(OracleResultSet.java:440)
at org.apache.commons.dbcp.DelegatingResultSet.getLong(DelegatingResultSet.java:278)
at org.apache.commons.dbcp.DelegatingResultSet.getLong(DelegatingResultSet.java:278)
at ismp.RealNameLibController$_closure2.doCall(RealNameLibController.groovy:34)
at ismp.RealNameLibController$_closure2.doCall(RealNameLibController.groovy)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
看异常信息中的oracle.jdbc.driver.CharCommonAccessor.getLong,此条堆栈信息是的描述的是数据库查出的数据转换为Long类型时失败。经检查数据库表结果中的字段类型及实体类中定义的数据类型。发现在实体类中的ID定义为Long类型,而数据库中对应的字段为varchar2类型。因此导致数据库在进行映射时发生异常。类似常见的问题如:数据库里为Number,而Java定义的对应属性类型为String。
问题处理步骤总结:
1、通过异常信息查找对应的错误字段(比如此例中的getLong);
2、逐一对照实体类和数据库中为Long类型的数据;
3、确认转换关系是否对应,调整数据库字段类型或实体类字段类型;
相关文章
- 报错:无法从int?转换为int
- 《C语言编程初学者指南》一2.5 使用转换修饰符
- android jni与java之间数据传输时怎么转换
- 文件夹转换为自定义包的方法及一些坑;__init__
- laravel 查询数据toArray内层无法转换的问题
- [开源框架推荐]Icepdf:纯java的pdf文档的提取和转换库
- POJ - 3321 Apple Tree (线段树 + 建树 + 思维转换)
- 成绩转换、出租车计价、计算天数
- 关于Cocos2d-x中坐标系的种类和转换
- 到值类型“System.DateTime”的强制转换失败,因为具体化值为 null。结果类型的泛型参数或查询必须使用可以为 null 的类型。
- SpringMVC关于json、xml自动转换的原理研究[附带源码分析 --转
- c#–无法将匿名方法转换为类型’System.Delegate’,因为它不是委托类型
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的