sql >> データベース >  >> RDS >> Oracle

java.lang.ClassCastException:oracle.sql.TIMESTAMPをjava.sql.Timestampにキャストできません

    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を設定するいくつかの方法について説明しています。



    1. Oracleの動的DESCおよびASCの順序

    2. SQL Serverのすべてのデータベースのすべてのテーブルを単一の結果セットに一覧表示するにはどうすればよいですか?

    3. SQLiteのインストール

    4. アクセスがあなたのビジネスのお金を節約できる方法