DBUnitで「data type not recognized」の警告がでる
DBUnitでテストを行ってると
WARNING - XXXテーブル名.XXXXフィールド名 data type (1111, ‘NVARCHAR2’) not recognized and will be ignored. See FAQ for more information.って警告がでたあげく落ちてしまった。。。
2006-04-04 19:06:32,281 ERROR testcase.BaseDatabaseTestCase (BaseDatabaseTestCase.java:170) - org.dbunit.dataset.NoSuchColumnException: XXXテーブル名.XXXXフィールド名
org.dbunit.dataset.NoSuchColumnException: TGM_CUSTOMER_MSTR.XXXXフィールド名
よく調べるとデータセットを生成する時にnvarcharのフィールドを読み込もうとしてこの警告が出たらしい。
で本家DBUnitのサイトを調べると
Why I get a "data type not recognized" warning?と書いてある。
By default, DbUnit only support standard JDBC data types. You will get this warning message if you are using vendor specific data types.
Read how to replace the default data type factory and how to disable this warning message.
デフォルト時はどうもnvarcharはダメらしい。
さらに調べると解決策が書いてあったのでそれを実装して解決。
↓こんな感じ
/** * @see DatabaseTestCase#getConnection() */ protected IDatabaseConnection getConnection() throws Exception { //java.sql.Connectionを取得する Connection connection = ConnectionUtil.getConnection(); String schema = connection.getMetaData().getUserName(); //DBUnitのコネクション設定 IDatabaseConnection conn = new DatabaseConnection(connection,schema); DatabaseConfig config = conn.getConfig(); //データタイプをセットしてやる config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new OracleDataTypeFactory()); return conn; }
少しびびったけど解決策があって一安心。