Oracle 1.8 CachedRowSet.populate 错误,其中 select 来自 dual 的系统时间戳

Oracle 1.8 CachedRowSet.populate error where select systimestamp from dual

我有一个简单的问题...为什么下面的代码不起作用?

堆栈跟踪:

java.sql.SQLException: Invalid SQL type for column
at javax.sql.rowset.RowSetMetaDataImpl.checkColType(RowSetMetaDataImpl.java:114)
at javax.sql.rowset.RowSetMetaDataImpl.setColumnType(RowSetMetaDataImpl.java:459)
at com.sun.rowset.CachedRowSetImpl.initMetaData(CachedRowSetImpl.java:761)
at com.sun.rowset.CachedRowSetImpl.populate(CachedRowSetImpl.java:639)

行“rowset.populate(rs);”抛出 "java.sql.SQLException: Invalid SQL type for column"

当我尝试执行查询时出现错误:

select systimestamp from dual

但是如果我使用下面的代码而不是“rowset.populate(rs);”,它会起作用:

rs.getTimestamp(1)

如果我尝试执行下面的查询,一切 运行良好:

select sysdate from dual

那么,我如何使用 rowset.populate(rs) 来获取 syscurrenttimestamp

我开始认为这是 oracle jdbc 实现的一个错误...

抱歉我的英语不好:)

正如@krokodilko 所建议的,我将 post 在这里将我的评论作为答案:

我最终用姑息的方法解决了这个问题。我没有对 return a TIMESTAMP 执行查询,而是对 return a STRING:

SELECT TO_CHAR(SYSTIMESTAMP, 'DD/MM/YYYY HH24:MI:SS.SSXFF TZR') FROM DUAL

然后我不得不对 TIMESTAMP 进行解析。我知道这很丑陋,但直到我们找到正确的解决方案。我仍然希望有人能帮助我们解决这个问题。