通过getObject()映射到Java对象类型的Oracle JDBC类型 - 错误的文档?

yel*_*ver 6 java oracle jdbc ojdbc

这是文档链接:"映射SQL和Java类型"

让我们看一下8.9.3在行上映射到Java对象类型的JDBC类型:TIMESTAMP - java.sql.Timestamp

但是当我在TIMESTAMP列上使用带有oracle数据库的getObject()时,返回类型是oracle.sql.TIMESTAMP,它不能被强制转换为java.sql.Timestamp

我知道我可以使用getTimestamp()但是我需要getObject()来处理任何结果集,而不管类型如何.

文件错了还是我?

小智 3

文档是正确的,Oracle JDBC 驱动程序有问题。

有2种可能的解决方案:

第一个,使用 getObject:

oracle.sql.TIMESTAMP ts = (oracle.sql.TIMESTAMP) res.getObject("last_update");
agent.setLastUpdate(new Date(ts.dateValue().getTime()));
Run Code Online (Sandbox Code Playgroud)

第二个是向您的应用程序添加 VM 参数:

-Doracle.jdbc.J2EE13Compliant=true
Run Code Online (Sandbox Code Playgroud)

这将使司机返回java.sql.Timestamp而不是oracle.sql.TIMESTAMP