[Seasar-user:9905] Re: [DbFlute]entity にidentityの値が設定されない
kubo
[E-MAIL ADDRESS DELETED]
2007年 8月 15日 (水) 01:18:55 JST
久保です。
> > 自分で明示的に取得した場合に両方共正常に取得できること
> > 裏返すとトランザクションなしのときにS2Daoの発行する
> > 「select @@identity」で値が取得できないこと
> > が、不思議です。
>
> ログからは分かりにくいですが,S2Dao は
> insert とその後の select @@identity を
> 別の (論理) コネクションで実行します.
>
> insert は InsertAutoHandler とその
> スーパークラス AbstractAutoHandler の
>
> public int execute(Object[] args) throws SQLRuntimeException {
> Connection connection = getConnection();
> try {
> return execute(connection, args[0]);
> } finally {
> ConnectionUtil.close(connection);
> }
> }
>
> で実行されますが,ここで取得された
> コネクションは execute(Connection, Object) が
> 終了するまでクローズされません.ここポイント.
ああっあああ、なるほど。すっきり理解できました。
トランザクションなしのときは、絶対に別コネクションになりますね。。。
Identityの取得を前提としてのInsertは基本的に
トランザクション内にて行う必要がありますね。
ありがとうございます。
Seasar-user メーリングリストの案内