6

これはドキュメントリンクです:「SQLとJavaタイプのマッピング」

行でJavaオブジェクトタイプにマップされた8.9.3JDBCタイプを見てみましょう:TIMESTAMP --java.sql.Timestamp

しかし、TIMESTAMP列のOracleデータベースでgetObject()を使用すると、戻りタイプはoracle.sql.TIMESTAMPであり、java.sql.Timestampにキャストできません。

getTimestamp()を使用できることは知っていますが、タイプに関係なく結果セットを処理するにはgetObject()が必要です。

文書は間違っていますか、それとも私ですか?

4

1 に答える 1

2

ドキュメントは正しいですが、OracleJDBCドライバが問題です。

2つの可能な解決策があります:

まず、getObjectを使用します。

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

2つ目は、アプリにVM引数を追加することです。

-Doracle.jdbc.J2EE13Compliant=true

これにより、ドライバーはのjava.sql.Timestamp代わりに戻りますoracle.sql.TIMESTAMP

于 2013-02-13T20:48:03.790 に答える