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