[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 メーリングリストの案内