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