[Seasar-user:14658] Re: S2DAOでJavaオブジェクトをDBへ格納できる?
Toshihiro Nakamura
[E-MAIL ADDRESS DELETED]
2008年 6月 12日 (木) 00:13:14 JST
中村(taedium)です。
> レスいただいたように、現在Seasar2.4.25+S2DAO1.0.48で試しているのですが
> 以下のようなExceptionが発生しており、前に進めなくなっております。
S2Daoが更新系のSQLだと判断できず、
PreparedStatement#executeQuery(String)を実行して
しまっているようです。
S2Daoがupdate文を扱えるように
「upFeedInfo」というメソッドの名前を「updateFeedInfo」に
変更してみてください。
# S2Daoにはいくつか守らなければいけない規約が存在します。
ちなみにですが、SQLファイルに記述された
更新系SQLを実行する場合には@ValueTypeの設定は利用されません。
もし、@ValueTypeを利用したい場合は、SQLの生成を
S2Daoにまかせてください。
> 不思議なのはExceptionが発生しているにもかかわらずロールバックされないことです
トランザクションが開始されていないからのようです。
コンポーネントをdiconファイルに登録してお使いのようなので
そのような例を示しますが、次のようにトランザクションの
インターセプタをかけたコンポーネントにDaoをDIして
このコンポーネントのメソッド経由でDaoを呼び出してください。
<include path="j2ee.dicon"/>
<component class="examples.HogeService">
<aspect>j2ee.requiredTx</aspect>
</component>
SMART deployを使う場合は、
このあたりを見てみてください。
http://s2container.seasar.org/2.4/ja/DIContainer.html#SMARTdeployTransaction
--
Toshihiro Nakamura
Seasar-user メーリングリストの案内