[Seasar-user:6521] Re: [DBFlute]CommonColumn について
kubo
[E-MAIL ADDRESS DELETED]
2007年 3月 6日 (火) 17:34:24 JST
久保です。
> CommonColumnにて以下のようにinsert時に3項目、update時に1項目を設定しています。
> insert時に正しく3項目が更新されていることを確認しました。
>
> でも、updateを実行すると、実際には3項目の更新が行われてしまいます。(RTIME=null、UUSER=設定値、RUSER=null)
>
> 設定したUUSERのみを更新したいのですが。
> 設定の不備や、お気づきの点がありましたら、ご教授お願い致します。
まず、Interceptorの動きに関しては、実行時に以下のようなログが
出力されます。これにて、Interceptorが想定どおりの動きかどうか
を確認することができます。
Intercepted the method 'LdDaoWritable.modifyModifiedOnly()': entity=map:@{BOOK_ID@=1@}
before setup : map:@{R_TIME@=...}
U_USER has been set up: value=HardCodeUser
after setup : map:@{R_USER@=...}
設定を拝見させて頂いた限りは、特に設定に不備があるようには思えないので、
Update時は、上記のように UUSER のみが更新setupされたというログに
なるはずです
こちらから、2点確認させて下さい。
A. Daoのメソッドは、updateModifiedOnly() を利用されていますでしょうか?
xxxModifiedOnly()以外の更新メソッドは、update文に全ての列を含めて
しまいますので、指定したEntityのRTIMEやRUSERがnullの場合は、
ご指摘のような現象が発生してしまうかと思います。
※Behaviorのupdate()経由ならupdateModifiedOnly()が
利用されているはずです
B. 「DXOにてPAGEクラスからEntityクラスへ値を設定」とのことですが、
この時、Entity の RTIME や RUSER の Setter は呼び出されますでしょうか?
(そして、その時設定される値はnullでしょうか?)
updateModifiedOnly()は、Setterが呼び出された列のみ更新します。
Null値を設定された場合は、Null値で更新します。
Seasar-user メーリングリストの案内