[Seasar-user:4488] Re: [S2Dao]バッチ更新insertでsequenceからid取得できない

Hirotaka HONMA [E-MAIL ADDRESS DELETED]
2006年 9月 1日 (金) 17:55:32 JST


ほんま@茅場町です。

on Fri, 01 Sep 2006 16:15:32 +0900
in [Seasar-user:4485] [S2Dao]バッチ更新insertでsequenceからid取得できない
六 <[E-MAIL ADDRESS DELETED]> wrote:

> S2Daoのバッチ更新のinsertで、
> IDのプロパティに
> @Id(value=IdType.SEQUENCE, sequenceName="hoge_seq")
> などと指定した時、
> select nextval()が実行されず
> idにnullが入ります。
> 
> 自前でループを回して通常のinsertを呼び出すと
> select nextval()が実行されて
> 問題ありませんでした。

はい、現行バージョンではその通りの動作をします。
バッチ更新でID自動採番が効かないのはS2Daoの仕様です。

1件ずつINSERTする場合はINSERT文を発行する直前にSEQUENCEから
nextvalを取得しているのですが、バッチ更新の場合はnextvalを取
得するタイミングが無いためです。

と書いたところで思いついたのですが、
DDLでIDへdefault hoge_seq.nextvalと定義しておいて、INSERT時
にIDへNO_PERSISTENT_PROPSアノテーションを付けておくと、バッ
チ更新でご希望どおりの結果を得られそうに思います。
(試してないので何とも言えないのですが...)

---
本間 宏崇 /** Hirotaka HONMA */
[E-MAIL ADDRESS DELETED]
ARK Systems Co., Ltd. : 株式会社アークシステム
http://www.arksystems.co.jp/




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