[Seasar-user:6735] Re: [S2Dao] PostgreSQLでのバッチ更新

duran [E-MAIL ADDRESS DELETED]
2007年 3月 18日 (日) 19:57:08 JST


duranです。

下記件了解致しました。
迅速なお返事ありがとうございました。

しかし、下記のようなテーブルだと
CREATE TABLE ACCOUNT(
ID SERIAL,
NAME TEXT,
PRIMARY KEY(ID)
)

PostgreSQLでSERIAL型のカラムを持つテーブルにデータを登録する場合、
INSERT INTO ACCOUNT(NAME) VALUES('名前');
でいけるので、IDアノテーションがついている場合は、
SQLにIDを含めないとか指定ができるといけそうな気が・・・
※S2Daoの実装を見てないので何とも言えませんが

ちなみに、insertBatchとした場合は
INSERT INTO ACCOUNT(ID,NAME) VALUES(NULL,'名前');
となってました。

> せとあずさです。
> 
> On Sun, 18 Mar 2007 19:18:13 +0900
> duran <[E-MAIL ADDRESS DELETED]> wrote:
> 
>> PostgreSQL8.2で、
>> SERIAL型のカラムを持つテーブルに対してバッチ更新を行うと
>> シーケンスが取得されずに更新されます。
>> 対象エンティティはIDアノテーションでシーケンス指定を行っています。
>> insertBatch(List entityList);
> 
> 申し訳ありませんが、バッチ更新時にIDアノテーションが
> 反映されないのは現バージョンのS2Daoの使用です。
> 
> これはバッチ更新の場合、複数レコードの更新・削除を
> まとめて行うためID値の取得を行うタイミングがないためです。
> (1件ずつINSERTする場合はINSERT文を発行する直前にSEQUENCEから
> nextvalを取得していますが、バッチ更新の場合はnextvalを取
> 得するタイミングが無いため。)
> 
> # ドキュメント・FAQに追記しておきます。
> 





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