[Seasar-user:9981] Re: [DBFlute]torque.versionNoFieldNameの設定方法

kubo [E-MAIL ADDRESS DELETED]
2007年 8月 20日 (月) 16:25:15 JST


久保です。

多加谷さん、こんにちは

> DBFluteのtorque.versionNoFieldNameにバージョン管理用のフィールド名を
> 設定し、排他制御しようとしていますが、where句には条件が入るものの、
> 値がインクリメントされません。

まず、仕様的には、S2Daoが自動でインクリメントしてくれるはずです。
なので、利用者(DBFluteも含めて)そこを意識する必要はないはずです。

設定を見る限り、特に問題はなさそうです。

唯一、言えるのは、commonColumnSetupBeforeInsertInterceptorLogicMapで
「VerNo=new java.math.BigDecimal(1)」としていますが、
S2Daoが自動で付与してくれるはずなので、この設定は不要です。
ですが、上記の問題としている現象とは無関係と思われます。
(設定してても単に無視されるだけのはず)

具体的には、AbstractAutoHandler#setupUpdateBindVariables()で
インクリメントされています。

> ・設定ファイル
> torque.versionNoFieldName = VerNo

試しに

torque.versionNoFieldName = VerNo

    ↓

torque.versionNoFieldName = verNo

でやってみて頂けます?

    } else if (pt.getPropertyName().equals(versionNoPropertyName)) {
        Object value = pt.getPropertyDesc().getValue(bean);
        int intValue = IntegerConversionUtil.toPrimitiveInt(value) + 1;
        setVersionNo(new Integer(intValue));
        varList.add(getVersionNo());

で、「pt.getPropertyName()」で比較しているので、
「列名 = VerNo / プロパティ名 = verNo」
なので、verNoでないといけないような気がします。


#
# C#の場合は、プロパティ名は先頭が大文字なので
# VerNoのままでもOKだったのかも...
#




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