[Seasar-user:16349] Re: [S2JDBC-Gen] SQL Server 2008 Express版で問題がありました

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2008年 11月 20日 (木) 19:44:22 JST


中村(taedium)です。

> まず、1)ですが、org.seasar.extension.jdbc.gen.dialect.GenDialectRegistryの変換
> マップ(dialectMap)に、MssqlGenDialectオブジェクトが格納されていないようです。
> (これは、あえて、現在は、そのようにしているのか、とも思いました。)

すみません、格納忘れです。

ところで、S2JDBCのダイアレクトで
mssqlDialectを使っているのは意図的でしょうか?
ドキュメントには書いていないかもしれないですが
mssqlDialect は SQL Server 2000で使用されることを想定しています。
SQL Server 2005以上であれば mssql2005Dialect を使うのがいいです。

http://s2container.seasar.org/2.4/ja/s2jdbc_setup.html#ダイアレクト

もし、mssql2005Dialectでうまくいかないところがあれば
Mssql2008DialectクラスやMssql2008GenDialectを作ることも検討しますので
何かあれば教えてください。

> というような形で作られたカラムなのですが、jtds-1.2.2.jarのConnectionオブジェクト
> から取り出されたDataBaseMetaDataに、getColumns(String, String, String, String)
> メソッドを適用して返されるRecordSetにgetString("TYPE_NAME")しますと、このカラムに
> ついては、"bigint"ではなく、"bigint identity" という値が返るようになってしまって
> います。

SQL Server 2008だからという可能もありますね。
想定外の型名がメタデータから返された場合は、
java.sql.Typesの値を使って、解決しようと思います。

> あと、1つアドバイスがあれば、御教示いただければと思うのですが、上記のような問題
> 解析は、とてもソースを追うだけではできず、クラスパスとシステムプロパティをセット
> した後に、org.seasar.extension.jdbc.gen.command.CommandAdapter#Main(String[]) を
> 呼び出すようなプログラムを実行させて、Eclipse上でトレースしました。そういう形が
> できてしまえば、楽に原因究明ができるようになったのですが、そこに辿りつくまでは、
> どうやったら問題の所在がわかるのか迷いました。Antを-verboseオプション付きなどで
> 実行しても何も情報が得られなかったり、ログがどこかに出ていないか探したりという
> 試行錯誤の上、もはやデバッガーでトレースするしかないだろうと決心してやってみた
> 次第です。他に、問題究明のアプローチとして、考えられたことがあれば、是非、教えて
> ください。よろしくお願いいたします。

確認のために教えてもらいたいのですが、
次のようなログは出力されているでしょうか?

  RDBMS(HSQL Database Engine)に対しS2JDBC-Gen用のデータベース
  の方言(org.sasar.extension.jdbc.gen.internal.dialect.HsqlGenDialect)を使用します。

もしこのようなログが出力されていなければ、log4j.propertiesの設定などで
ログ出力が抑制されてしまっているのかもしれません。

トレースするならば、
org.seasar.extension.jdbc.gen.internal.commandパッケージにある
XxxCommandのexecuteメソッドを直接呼び出してもらうのが簡単だと思います。
S2JDBC-GenのほとんどのAntタスクがXxxCommandにマッピング
されています。
executeメソッドの実行前にはsetterメソッドで必要な
プロパティを設定してください。

わからないことは気軽にこのMLで聞いてもらっていいですよ。

> #蛇足です。
>http://s2container.seasar.org/2.4/ja/s2jdbc_gen/tasks/gen_service.html の表の
> #中で、プロパティ名が useNames となっているのは、useNamesClass の間違いだと
> #思います。

はい、その通りです。
ご指摘ありがとうございます。

-- 
Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>



Seasar-user メーリングリストの案内