ResultSet.getObject()のjavadocは、JDBC仕様(TIMESTAMP-> java.sqlTimestmp)で規定されているようにJDBCタイプをJavaタイプにマップすることを義務付けています。
このメソッドは、指定された列の値をJavaobjectとして返します。 Javaオブジェクトのタイプは、JDBC仕様で指定されている組み込みタイプのマッピングに従って、列のSQLタイプに対応するデフォルトのJavaオブジェクトタイプになります。
お気づきのとおり、Oracleドライバーはデフォルトで標準に準拠していません oracle.sql.TIMESTAMP
を使用します 代わりに(java.sql.Timestamp
を拡張しません )。幸いなことに、 oracle.jdbc.J2EE13Compliant を設定することで、JDBCコンプライアンスを強制できます。 true
へのシステムプロパティ vmの起動中:
java -Doracle.jdbc.J2EE13Compliant=true YourApplication
またはプログラムで
System.getProperties().setProperty("oracle.jdbc.J2EE13Compliant", "true")
これを行うと、getResult()はjava.sql.Timestamp
のインスタンスを返します 、予想どおり。
詳細については、Oracle JDBC Driver Documentationの関連セクションを参照してください。このセクションでは、oracle.jdbc.J2EE13Compliantを設定するいくつかの方法について説明しています。