0

Java 1.4 アプリで問題が発生しています。

Oracleデータベースの2つの日付フィールドであるJDBC Qyeryを実行しています(私が読んでいる2つのフィールドは両方とも、NULLABLE = falseのDATE型です)

SELECT effFrom, effTo FROM myTable WHERE ....

そして、JDBCConnection で実行されます

Object[][] result = JDBCConnection.getSqlObjectArray(query, bindVals);

結果でデータを取得し、それをループします

for (int i = 0; i < result.length; i++) {
 java.sql.Timestamp effFrom = (java.sql.Timestamp ) result[i][0];
 java.sql.Timestamp effTo = (java.sql.Timestamp ) result[i][1];

しかし、エラーClassCastException: Cannot cast java.sql.Date (id=9010) to java.sql.Timestampでオブジェクトを java.sql.Timestamp に変換できません

(java.sql.Timestamp ) result[i][0]

だから私は変換を

java.sql.Date effFrom = (java.sql.Date) result[i][0];

そしてそれは働いています。すべて完璧です。

しかし、問題は、私のコードは変更されておらず、データは少なくとも過去 6 か月間変更されていないということです。

昨日までのタイムスタンプ変換で機能しましたが、今日はタイムスタンプではなく日付で機能しています。

その後、ソース コード リポジトリに戻り、元は約 2 年前の java.sql.Date であることがわかりましたが、今では基本的にロール バックしています。明らかに、私がここで見逃しているものがあります。

JDBC クエリがデータ型を誤って解釈する方法はありますか?

ルディの質問によると、 JDBCConnection.getSqlObjectArray() の中に何がありますか

dao と呼ばれる JdbcDaoSupport クラスがあります。

 public static Object[][] getSqlObjectArray(String sql, String bind1, String bind2, String bind3) {

        Object[][] a = dao.getSqlObjectArrayImpl(sql, bind1, bind2, bind3);
        return a;
    }
4

0 に答える 0