-
Type: Bug
-
Resolution: Cannot Reproduce
-
Priority: 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例外が発生する、と考えられる。