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