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

Ryuzo Yamamoto [E-MAIL ADDRESS DELETED]
2007年 3月 18日 (日) 22:04:59 JST


山本@サーバチームです。

> PostgreSQLでSERIAL型のカラムを持つテーブルにデータを登録する場合、
> INSERT INTO ACCOUNT(NAME) VALUES('名前');
> でいけるので、

とありますので、試していませんが、下記の定数アノテーション

----------------------------------------------------------------------
public static final String insertBatch_NO_PERSISTENT_PROPS = "ID";
----------------------------------------------------------------------

の追加でいけそうな気がしますが、どうでしょう?




-------- Original Message --------
From: duran <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:6735] Re: [S2Dao] PostgreSQLでのバッチ更新
Date: Sun, 18 Mar 2007 19:57:08 +0900

> 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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user



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