Uploaded image for project: 'S2Dao.NET'
  1. S2Dao.NET
  2. DAONET-68

Oracle使用時、TimeStampProperty属性の排他制御でエラー

XMLWordPrintable

    • Type: Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Priority: Icon: Major Major
    • None
    • Affects Version/s: 1.3.4
    • Component/s: S2Dao.NET
    • None
    • Environment:
      Oracle 10g R2
      ODP.NET 10.2.0.3

      OracleのDATE型を持つテーブルに対してEntityとDaoインターフェースを定義する。
      EntityにはTimeStampProperty属性を指定する。
      Daoインターフェースには、InsertメソッドとUpdateメソッドを定義する。

      Insertメソッドの後に続けてUpdateメソッドを実行するとEntityのTimeStampプロパティの値とDBレコードのTimeStampカラムの値は等しいので
      NotSingleRowUpdatedRuntimeException例外は発生しない、ことが正しい動きになる。
      しかし、NotSingleRowUpdatedRuntimeException例外が発生する。
      そのため、TimeStampPropertyによる排他制御がはたらかない。

      原因として考えられるのが、OracleのDATE型は秒までの精度に対し、TimeStampPropertyで取得する現在日時はミリ秒の精度になる。
      そのため、切り捨てられたミリ秒が異なるのでNotSingleRowUpdatedRuntimeException例外が発生する、と考えられる。

            Assignee:
            rmiyax rmiyax
            Reporter:
            rmiyax rmiyax
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: