[Seasar-user:9909] Re: [DbFlute]entity にidentityの値が設定されない

Yu Tagaya [E-MAIL ADDRESS DELETED]
2007年 8月 15日 (水) 11:49:49 JST


多加谷です。

下記の件ですが、コンテナの初期化方法に問題があり、複数のtransactionManager、
コネクションが混在する状況になっておりました。

修正して実行したところ、

・identityがinsert後のentityに設定されていること。
・<property name="allowLocalTx">false</property>にしても動作すること。

を確認できました。

皆様、情報提供をありがとうございました。
また、お忙しい中、ご迷惑をおかけいたしましたことをお詫び申し上げます。

> 久保です。
>
>> > 自分で明示的に取得した場合に両方共正常に取得できること
>> > 裏返すとトランザクションなしのときに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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 




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