S2Dao/MySQL4.0で複数のスキーマに対応する

MySQLJDBCドライバはDatabaseMetadataの使用時に問題があるようです。
他のDBではどうかわかりませんが、接続文字列で指定したスキーマ以外のスキーマのメタ情報を取ろうとするとエラーが発生します。

スキーマとDataSourceのマッピングを持つ、DaoMetaDataFactoryImplを使用することで解決できます。

拡張したDaoMetaDataFactoryImplとdiconファイルはこちら。
http://www.nulab.co.jp/~agata/s2/DaoMetaDataFactoryImpl.java
http://www.nulab.co.jp/~agata/s2/dao.dicon

public static final String TABLE = "schemeC.employee";

この拡張したDaoMetaDataFactoryImplは
BeanのTABLEアノテーションスキーマが指定されている場合(スキーマ名.テーブル名)、dao.diconで指定したマッピングを利用してDataSourceを決定し、DatabaseMetadataを作成します。
スキーマが指定されていない場合、デフォルトのスキーマが使用されます。

S2TestCaseもちょっと工夫すれば、スキーマを指定してテストデータを流し込めるようになります。