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;
}