[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 メーリングリストの案内