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

kubo [E-MAIL ADDRESS DELETED]
2007年 8月 14日 (火) 22:16:46 JST


久保です。

> RkBsBaseのsetBaseIdではnullが設定されています。
> select @@identityを呼ぶDaoメソッドを定義して実行すると
> 正しい値が取れました。transactionなしで検証しています。
> 
> 原因がわかりますでしょうか?

今自分、ローカルで SQLServer2005 ExpressEdition で、
S2Dao-1.0.43使って、Insertを試してみました。

JUnit上ではありますが、

トランザクションあり
  → Insert後にEntityにIDが設定された。
  → 自分で明示的に「select @@identity」で同じ値が取得できた。

トランザクションなし
  → Insert後にEntityにIDが設定されない。★
  → 自分で明示的に「select @@identity」で値が取得できた。

「トランザクションなし」において、多加谷さんが試された結果と
同じになっております。

自分で明示的に取得した場合に両方共正常に取得できること
裏返すとトランザクションなしのときにS2Daoの発行する
「select @@identity」で値が取得できないこと
が、不思議です。

ただ、ひとまず、トランザクションありではSQLServerでも値が正常に
取得できるようなので、別問題として挙がっている「トランザクション」
の問題を解決されてからもう一度試されるのが良いかと思いました。
Insertするときは大抵トランザクション内だと思うので、そちらが解決
すれは、こっちも解決するかもしれません。



#
# 不思議...
#




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