読者です 読者をやめる 読者になる 読者になる

kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

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