[seasar-s2dao-dev:94] VersionNoやTimestampの値がnullだった場合の仕様について

kubo jazzflute @ mbn.nifty.com
2007年 1月 3日 (水) 16:03:30 JST


久保です。

Entityに、VersionNoやTimestampのAnnotationを付与して
S2Daoに排他制御を自動で行ってもらう場合の話です。


VersionNo/TimestampのAnnotationを付与すると、
Dao#update()の引数のEntityのVersionNo/Timestampに値が
SetされているとUpdate文のWhere句に条件が付与されます。
ex) VERSION_NO = 3

現状、その引数のEntityのVersionNoがnullだった場合、
Update文のWhere句の条件は、VERSION_NO = null となり、
必ず0件更新になって、NotSingleRow...Exceptionが発生します。

(S2DaoのManualより)
> 更新時にTimestamp用のカラムの値にnullが設定されていると
> 比較に失敗するので注意してください。

とあるので、これはS2Daoの仕様となると思いますが、
この仕様の目的は:

  Entityに排他制御のAnnotationを付けたからには、
  VersionNo/Timestampの値を設定しない限り更新をできないようにする。
    →排他制御の強制

ということでしょうか?
コミッタ間での認識を確認したいです。




-- 
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
kubo   <jazzflute @ mbn.nifty.com>
jflute <http://d.hatena.ne.jp/jflute>
株式会社ビルドシステム <http://www.buildsystem.co.jp>
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/




seasar-s2dao-dev メーリングリストの案内