S2Dao JavaBeansのIDアノテーションについての注意
初めてS2Daoを使っています。IDアノテーションを使ってみたのですが、自動採番結果の取得が出来なくて悩んでしまいました。やっと解決したので、メモしておきます。
IDアノテーションが存在するテーブルに対して、Insertメソッドを呼び出すと、S2Dao内部ではInsert実行後、「SELECT LAST_INSERT_ID()」によって登録されたレコードの自動採番結果を取得します。ここで、InsertとSelectは同じトランザクションにする必要があるようです。
同じトランザクションにするためには、DAOに対するdiconファイルの設定で、トランザクションを指定する必要がありました。
DAOのdiconファイル(抜粋)
<component class="money.dao.HogeDao"> <aspect>j2ee.requiredTx</aspect> <aspect>dao.interceptor</aspect> </component>
※j2ee.requiredTxは、dao.interceptorよりも先に記述する必要があるようです。
AOPのdiconファイル(抜粋)
<components namespace="j2ee"> (中略) <component name="requiredTx" class="org.seasar.extension.tx.RequiredInterceptor"/>
動作環境
OS: Windows XP
Eclipse Version: 3.3
Java Version: 1.6
S2Dao Version: 1.0.47