[Seasar-user:17407] Re: [S2JDBC-Gen]oidを含む列をダンプできない
Toshihiro Nakamura
[E-MAIL ADDRESS DELETED]
2009年 5月 11日 (月) 15:30:40 JST
中村(taedium)です。
> 上記の環境で、S2JDBC-GenのGen-ddlタスクで以下のようなエラーが発生します。
> 問題が発生するのは、フィールドにoid列を含むテーブルをダンプする際に発生しているようです。
oidにはauto-commit modeでアクセスできないんですね。
次のバージョンからは、トランザクションをかけて実行できるようにしたいと
思います。
とりあえずの対応策ですが、
org.seasar.extension.jdbc.gen.internal.factory.FactoryImplを継承して
次のようなクラスを作ってください。
public class MyFactory extends FactoryImpl {
@Override
public SqlUnitExecutor createSqlUnitExecutor(Command command,
DataSource dataSource, UserTransaction userTransaction,
boolean haltOnError) {
UserTransaction ut = SingletonS2Container
.getComponent(UserTransaction.class);
return super
.createSqlUnitExecutor(command, dataSource, ut, haltOnError);
}
}
次に、このクラスの完全修飾名をGen-DdlタスクのfactoryClassNameパラメータ
に設定してください。
これで、トランザクションをかけてGen-Ddlを実行できるので
oidが使えると思います。
Gen-Ddl以外のタスクには transactional というパラメータをもつものが
ありますが、それらのタスクはそのパラメータに true を設定することで
トランザクション内で実行できます。
--
Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内