[Seasar-user:18085] 複数DB接続時、INSERTしたIDが取得できない
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2009年 7月 28日 (火) 11:30:11 JST
初めてメールさせていただきます。神崎と申します。
開発環境
Eclpse3.2
Seasar2.3.21
S2Dao 1.0.45
SQL Server 2005
SQL JDBC DRIVER 2.0.1803.100
"SelectableDataSourceProxy"を利用して複数DBに接続することはできたのですが、
INSERT後のIDENTITY(自動採番)だけが取得できない場合があり、困っております。
UserDao.java
====================
:
@S2Dao(bean = User.class)
public interface UserDao {
int insert(User entity);
}
:
====================
j2ee.dicon
====================
:
<components namespace="j2ee">
<include path="j2ee-ACompany.dicon"/>
<include path="j2ee-BCompany.dicon"/>
<include path="j2ee-CCompany.dicon"/>
<component
name="dataSourceSelect"
class="org.seasar.extension.component.impl.SelectableDataSourceProxy"/>
</components>
:
====================
当初、各diconファイル(例:j2ee-ACompany.dicon)毎にtransactionManagerを
定義していたのですが、一番最初にincludeした"j2ee-ACompany.dicon"に定義
したDBにInsertした場合のみ、IDENTITYが返ってます。
しかしながら、j2ee-BCompany.dicon(二つ目以降)に定義したDBにInsertした際、
常にIDENTITY=0が返ってきます。
そこで、過去のML[Seasar-user:9898]を見てみるとtransactionManagerは一つで
良いと推測し、下記をj2ee.diconに下記を移動しました。
====================
<component name="transactionManager"
class="org.seasar.extension.jta.TransactionManagerImpl"/>
<component name="requiredTx"
class="org.seasar.extension.tx.RequiredInterceptor"/>
<component name="requiresNewTx"
class="org.seasar.extension.tx.RequiresNewInterceptor"/>
<component name="mandatoryTx"
class="org.seasar.extension.tx.MandatoryInterceptor"/>
<component name="notSupportedTx"
class="org.seasar.extension.tx.NotSupportedInterceptor"/>
====================
すると、下記のエラーが発生し、各DBへの接続もできず、行き詰っています。
====================
java.lang.NullPointerException
at org.seasar.framework.util.TransactionManagerUtil.getTransaction(TransactionManagerUtil.java:35)
at org.seasar.extension.dbcp.impl.ConnectionPoolImpl.getTransaction(ConnectionPoolImpl.java:188)
at org.seasar.extension.dbcp.impl.ConnectionPoolImpl.checkOut(ConnectionPoolImpl.java:151)
at org.seasar.extension.dbcp.impl.DataSourceImpl.getConnection(DataSourceImpl.java:46)
at org.seasar.extension.component.impl.SelectableDataSourceProxy.getConnection(SelectableDataSourceProxy.java:118)
at org.seasar.extension.jdbc.util.DataSourceUtil.getConnection(DataSourceUtil.java:36)
at org.seasar.dao.impl.DaoMetaDataImpl.initialize(DaoMetaDataImpl.java:147)
:
====================
大変恐縮ですが、問題点をご指摘いただけないでしょうか?
宜しくお願い致します。
--------------------------------------
Power up the Internet with Yahoo! Toolbar.
http://pr.mail.yahoo.co.jp/toolbar/
Seasar-user メーリングリストの案内