[seasar-s2dao-dev:40] 更新したプロパティのみをUPDATE文に含める
Hirotaka HONMA
manhole @ arksystems.co.jp
2006年 11月 24日 (金) 09:25:11 JST
ほんまです。
更新したいカラムのみをUPDATE文に含める機能としてUnlessNullが
ありますが、
1. SELECTしてEntityを取得
2. Entityの1プロパティを更新
3. UPDATE
という操作をすると、結局全カラムがUPDATE文に含まれてしまいま
す。更新したくないプロパティへnullをセットすればUnlessNullが
機能するのですが、nullをセットするのがちょっと煩雑だと思いま
した。
というわけで、UPDATE文に更新プロパティのみを含める機能を提
案します。
と言いつつ実は手元では動いています。(コードは汚いですが...)
EntityのsetterへAspectを仕掛けて更新したプロパティを記録する
ことで、機能を実現しています。
例えば次の操作を行うと、
final Emp emp = empDao.findById(7499);
emp.setJob("MANAGER");
empDao.updateModifiedOnly(emp);
次のようなUPDATE文が発行されます。
UPDATE EMP SET
tstamp = '2006-11-24 09.18.29'
,job = 'MANAGER'
WHERE empno = 7499
AND tstamp = '2000-01-01 00.00.00'
どうでしょうか? よろしくお願いします。
seasar-s2dao-dev メーリングリストの案内