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

时间:2013-01-30 04:05:46

标签: java oracle jdbc ojdbc

这是文档链接:"Mapping SQL and Java Types"

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

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

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

文件是错还是我?

1 个答案:

答案 0 :(得分:2)

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

有两种可能的解决方案:

首先,使用getObject:

oracle.sql.TIMESTAMP ts = (oracle.sql.TIMESTAMP) res.getObject("last_update");
agent.setLastUpdate(new Date(ts.dateValue().getTime()));

第二种是向您的应用添加VM参数:

-Doracle.jdbc.J2EE13Compliant=true

这将使驱动程序返回java.sql.Timestamp而不是oracle.sql.TIMESTAMP