Uploaded image for project: 'S2Container'
  1. S2Container
  2. CONTAINER-26

ストアド利用するとき、オラクルのNUMBERをJavaのBigDecimalに変換できません。

XMLWordPrintable

    • Type: Icon: Bug Bug
    • Resolution: Won't Fix
    • Priority: Icon: Major Major
    • None
    • Affects Version/s: 2.3.12
    • Component/s: S2Container
    • None
    • Environment:
      Client:WinXP+Eclipse3.2+S2Container 2.3.12+JDK1.5.0.07
      Server:Win2003+Oracle9i

      S2DAOでオラクルのストアドを呼出して、ストアドで設定済みのOUTオブジェクトを
      javaのDTOに変換しますが、NUMBERをBigDecimalを変換するところ、Exceptionが
      Throwされました。

      また、2.3.12版のorg.seasar.framework.util.BigDecimalConversionUtil.toBigDecimalクラス
      と2.4.6版実装が違いますが、同様の結果になっています。

      Debugしてみて、該当メソッドに、下記のような処理が必要のようです。
      else if (o instanceof NUMBER){
      try

      { return ((NUMBER)o).bigDecimalValue(); }

      catch(SQLException e)

      { return null; }

      エラースタック:
      org.seasar.framework.beans.IllegalPropertyRuntimeException:
        ・・・理由はjava.lang.NumberFormatException
      ・・・省略・・・
      at java.math.BigDecimal.<init>(BigDecimal.java:647)
      at org.seasar.framework.util.BigDecimalConversionUtil.toBigDecimal(BigDecimalConversionUtil.java:68)
      at org.seasar.framework.util.BigDecimalConversionUtil.toBigDecimal(BigDecimalConversionUtil.java:30)
      at org.seasar.framework.util.NumberConversionUtil.convertNumber(NumberConversionUtil.java:30)
      ・・・省略・・・

      ストアドイメージ:
       my package#my function(in inData ユーザ定義タイプ,out outData ユーザ定義タイプ)
      ユーザ定義タイプ:
      ( A NUMBER、B DATE C VARCHAR2)

            Assignee:
            higa higa
            Reporter:
            lijunjp1104 lijun
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: