[Seasar-user:9980] [DBFlute]torque.versionNoFieldNameの設定方法
Yu Tagaya
[E-MAIL ADDRESS DELETED]
2007年 8月 20日 (月) 15:54:28 JST
多加谷@アークシステムです。
DBFluteのtorque.versionNoFieldNameにバージョン管理用のフィールド名を
設定し、排他制御しようとしていますが、where句には条件が入るものの、
値がインクリメントされません。
S2Daoのマニュアルを見ると、
「例えば、2人のユーザがversionNo値0の同一データを取得して更新しようとした場合、
先に更新したユーザは正常に登録することができます。
そのとき自動でversionNoはインクリメントされ、DBのversionNoは1となります。」
とありますが、これをS2Daoが値を増分してくれるという意味にとっています。
update時にバージョンカラムの値を1増やす方法を教えてください。
以下、追加情報です。
・DB
VerNo int NOT NULL,
・設定ファイル
torque.versionNoFieldName = VerNo
torque.commonColumnMap =
map:{RegDttm=TIMESTAMP;ModDttm=TIMESTAMP;LastModDttm=TIMESTAMP;RegUserId=INTEGER;ModUserId=INTEGER;VerNo=INTEGER;InvalidFlg=VARCHAR}
torque.commonColumnSetupBeforeInsertInterceptorLogicMap = map:{ \
RegDttm=jp.xxx.core.ApplicationContext.getCurrentTimestamp() \
; ModDttm=jp.xxx.core.ApplicationContext.getCurrentTimestamp() \
; LastModDttm=new java.sql.Timestamp(System.currentTimeMillis()) \
; RegUserId=new
java.math.BigDecimal(jp.xxx.core.ApplicationContext.getApplicationUser().getUserId())
\
; ModUserId=new
java.math.BigDecimal(jp.xxx.core.ApplicationContext.getApplicationUser().getUserId())
\
; VerNo=new java.math.BigDecimal(1) \
; InvalidFlg="n" \
}
torque.commonColumnSetupBeforeUpdateInterceptorLogicMap = map:{ \
ModDttm=jp.xxx.core.ApplicationContext.getCurrentTimestamp() \
; LastModDttm=new java.sql.Timestamp(System.currentTimeMillis()) \
; ModUserId=new
java.math.BigDecimal(jp.xxx.core.ApplicationContext.getApplicationUser().getUserId())
\
}
Seasar-user メーリングリストの案内