[DAO-48] [seasar-s2dao-dev:40] 更新したプロパティのみをUPDATE文に含める Created: 2006-11-24 Updated: 2007-01-18 Resolved: 2007-01-05 |
|
| Status: | Resolved |
| Project: | S2Dao |
| Component/s: | s2dao |
| Affects Version/s: | None |
| Fix Version/s: | 1.0.40 |
| Type: | New Feature | Priority: | Major |
| Reporter: | manhole | Assignee: | manhole |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
http://ml.seasar.org/archives/seasar-s2dao-dev/2006-November/000039.html 更新したいカラムのみをUPDATE文に含める機能としてUnlessNullが というわけで、UPDATE文に更新プロパティのみを含める機能を提案します。 と言いつつ実は手元では動いています。(コードは汚いですが...) 例えば次の操作を行うと、 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'
どうでしょうか? よろしくお願いします。 |
| Comments |
| Comment by higa [ 2007-01-18 ] |
|
+1 |
| Comment by manhole [ 2007-01-18 ] |
|
> Daoのupdate系メソッドの戻りがintの場合は更新行数を返すというのが現行の仕様ですが、 と書いたのですが、更新件数0件なので0を返すようにしようと考えを変えました。 (UPDATE文が発行され && 更新件数が0件)の場合は例外となるため、 |
| Comment by manhole [ 2007-01-18 ] |
|
Anonymousさんもコメントありがとうございます、(c)案で良さそうですね。 > ちなみに、UPDATEを行わない場合、ログはどのようになるのでしょうか? すみません、ログは考えていなかったのですが、SQL文をDEBUG出力しているようなモノのことでしょうか? |
| Comment by Anonymous [ 2007-01-17 ] |
|
上のコメントした者です。 |
| Comment by Anonymous [ 2007-01-17 ] |
|
(c)に+1します。 |
| Comment by manhole [ 2007-01-17 ] |
|
>ひがさん > versionNoやtimestampは最新の値にupdateするという意味ですよね。 はい。 verisonNoやtimestampが無い場合は、(a)と(c)は同じ動きになるかと。 Daoのupdate系メソッドの戻りがintの場合は更新行数を返すというのが現行の仕様ですが、 |
| Comment by higa [ 2007-01-17 ] |
|
Cに+1。 |
| Comment by manhole [ 2007-01-17 ] |
|
UPDATEする際に、1つもプロパティが変更されていない場合はどういう動作が望ましいでしょうか? ぱっと思いつくトコロでは... (a) UPDATE文を発行しない のいずれかかなと思います。 |
| Comment by manhole [ 2007-01-17 ] |
|
setterが呼ばれても、実際のプロパティ値が同じ場合は変更されたと見なさない(UPDATE文に含めない)ようにしました。 |
| Comment by manhole [ 2007-01-17 ] |
|
setterが呼ばれても、実際のプロパティ値が同じ場合は変更されたと見なさない(UPDATE文に含めない)ようにしようと思います。 |
| Comment by jflute [ 2006-12-12 ] |
|
Entityに ModifiedProperties が定義されていない場合の例外が |
| Comment by manhole [ 2006-11-24 ] |
|
動作するコードと、とても簡単なテストはコミットしました。 |