Oracle 11.1以降のDatabaseManager制限事項について教えてください。

【現象】
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 に設定してください。
具体的には、ApplicationRuntimeのconf/imart.xml
「intramart/platform/java/server/command/option」を以下のように編集します。
//----
 ・修正前
   <option>-cp %SYSTEMCLASSPATH% -Xms%XMS% -Xmx%XMX% -Djava.awt.headless=
      true -Dcom.sun.management.jmxremote</option>
 ・修正後
   <option>-cp %SYSTEMCLASSPATH% -Xms%XMS% -Xmx%XMX% -Djava.awt.headless=
      true -Dcom.sun.management.jmxremote -Doracle.jdbc.mapDateToTimestamp=false</option>
//----
Javaのシステムプロパティ「oracle.jdbc.mapDateToTimestamp」の詳細はOracleのドキュメントをご参照ください。
Oracle Database JDBC開発者ガイドおよびリファレンス 11gリリース1(11.1)
 - [A リファレンス情報] - [埋込みSQL92構文] - [Oracleオブジェクト型からSQL DATEデータ型へのマッピング]
http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/java.111/E05720-02/apxref.htm#i1005144

-- 対象 ------------------------------------------------------------------------
iAP
--------------------------------------------------------------------------------

FAQID:586
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
Powered by Zendesk