[Seasar-user:10431] Re: [S2Dao]VersionNoによる排他制御が2回目の更新以降、正しく行われない。

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2007年 9月 10日 (月) 12:45:49 JST


中村(taedium)です。

> テーブルのversionnoの値は、insert,update(1回目),update(2回目)で、次のよ
> うに変化していくと思っています。
> 
> insert          versionno  0
> update(1回目)   versionno  0 -> 1
> update(2回目)   versionno  1 -> 2    ※ここのupdateでエラー
> 
> 実際、update(1回目)を実行後、versionnoの値は1になっていました。
> ところが、2回目のupdate文の中身を見てみると、
> 
> UPDATE ・・・  versionno = 1 WHERE id = 2 AND versionno = 0
> 
> となっています。2回目なので、
> 
> UPDATE ・・・  versionno = 2 WHERE id = 2 AND versionno = 1
> 
> と、ならなければならないとおもうのですが、うまくいきません。
> Dtoの設定が悪いのでしょうか?以下ソースです。

WHERE句のversionnoにはDaoのupdateメソッドに渡すEntityのversionno
プロパティの値がそのまま設定されるはずです。
また、SET句にはWHERE句のversionnoに1を足した値が設定されるように
なっています。

2回目の呼び出しのときのEntityのversionnoが0のままになって
updateメソッドにわたっているのではと思います。

-- 
Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>




Seasar-user メーリングリストの案内