【現象】
DBのDATE型フィールドを、スクリプト開発モデルAPI「DatabaseManager」で取得する際Oracleのバージョン(JDBCドライバのバージョンを含む)によって異なるJavaScript型が返却されます。
【原因】
Oracle Database 11g リリース1 (11.1) から、デフォルトで「oracle.sql.DATE」が「java.sql.Timestamp」にマッピングされるようになります。
(なお、Oracle Database 9.0.1 から 11.0 では「oracle.sql.DATE」が「java.sql.Date」にマッピングされております)
この影響により、DBのDATE型フィールドを、スクリプト開発モデルAPI「DatabaseManager」で取得する場合、Oracleのバージョン(JDBCドライバのバージョンを含む)によって異なるJavaScript型が返却されます。
具体的には、Oracle Database 9.0.1 から 11.0 を利用している場合は、JavaScriptのDate型が返却され、Oracle Database 11.1 以降 を利用している場合は、JavaScriptのString型が返却されます。
【対応方法】
Javaのシステムプロパティ「oracle.jdbc.mapDateToTimestamp」を false に設定してください。
具体的には、resinインストールフォルダ/conf/resin.properties の「jvm_args」に以下を追加します
-Doracle.jdbc.mapDateToTimestamp=false
Javaのシステムプロパティ「oracle.jdbc.mapDateToTimestamp」の詳細はOracleのドキュメントをご参照ください。
Oracle Database JDBC開発者ガイドおよびリファレンス 11gリリース1(11.1)
- [A JDBCリファレンス情報] - [Oracleオブジェクト型からSQL DATEデータ型へのマッピング]
https://docs.oracle.com/cd/F19136_01/jjdbc/JDBC-reference-information.html#GUID-271C19F0-459D-4DA8-8C1D-F04AA5B8CD08__GUID-83B0777E-468F-4FDD-B55C-C5A36D962C84
-- 対象 ------------------------------------------------------------------------
iAP/Accel Platform/全アップデート
--------------------------------------------------------------------------------
FAQID:586
Oracle 11.1以降のDatabaseManager制限事項について教えてください。