[Seasar-user:5205] Re: [S2Dao] トランザクションについて。
mail.list.dev
[E-MAIL ADDRESS DELETED]
2006年 11月 20日 (月) 02:29:03 JST
近藤です。
私も同様の現象ではまりました。
原因は、updateAdd を実装しているクラスと、daoを別々のContainer
(別インスタンス)にしていた為、トランザクションが働かない(無効?)
という状態になりました。
対応策としては、
1.updateAddメソッドの実装クラスをコンテナから取得する時に、同時に
daoのインスタンスも取得し、実装クラスにsetterで与えるようにする。
つまり、updateAddメソッドの実装クラス内でdaoインスタンスを生成
しない。
2.containerから取得する際、SingletonS2ContainerFactoryを使用する。
という2つの方法がありますが、私は1.を採用しました。
竹之内のソースを確認したわけではないので、はずしているかもしれません。
差し支えなければソースを見せてもらえば、より具体的な回答ができるかと
思います。
※必要なのは、updateAddの呼び出しているクラス、updateAddメソッドの
実装クラスです。
kazuya Takenouchi wrote
> 竹之内です。
> お世話になります。
>
> サービス層のupdateAddというメソッドにトランザクション(j2ee.requiredTx)
> をかけ、そのメソッド内で、daoをよび、更新や追加をしています。
> daoにはトランザクションはかけていません。
> その際、途中でエラーが出ても、ロールバックがされません。
>
> ログにはトランザクションをロールバックしました。
> と出ているのですが、テーブルを見るとロールバックされていませんでした。
>
> どのような原因が考えられますでしょうか?
>
> 環境:
> s2-dao-1.0.39
> s2-2.3.10
> DB2 V8.1
>
> ご教授頂ければ幸いです。
> よろしくお願いいたします。
>
> --------------------------------------
> Yahoo! JAPAN "Pink Ribbon Campaign 2006"
> -Breast Cancer Awareness-
> http://pr.mail.yahoo.co.jp/pinkribbon/
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
Seasar-user メーリングリストの案内