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