[Seasar-user:3182] [S2Unit] readXlsAllReplaceDb() で指定するExcel ファイル

松山 大樹 t.matsuyama
2006年 2月 13日 (月) 18:47:00 JST


 松山です。

 S2Unit を使用してテストを行っている際、Excel を利用したテストデータの
作成するタイミングで例外が発生しています。

 PostgreSQL8.1 でしか確認していませんが、
------------------------------------------------
create table daoTest (
    ID   integer not null,
    kind integer
);
Alter table daoTest add Primary Key (ID);
------------------------------------------------
 というテーブルを作成し、対応するマッピングBean を以下のように
作成します。
------------------------------------------------
public class DaoTest {
	private int ID = 0;
	private Integer kind = null;
}
------------------------------------------------
(getter/setter は省略)

 そして、テストクラス(S2TestCase を継承)の中で、

-----------------------------------------------------------
private static final String TESTDATA_EXCEL = "DaoTest.xls";
public void testRun() {
    readXlsAllReplaceDb(TESTDATA_EXCEL);
}
-----------------------------------------------------------
 と行うとします。

 このとき、DaoTest.xls のセルの内容が、

+------+--------+ 
|  ID  |  kind  |
+------+--------+ 
|   1  |   100  |
+------+--------+ 
|   2  |   200  |
+------+--------+ 

 だと正常にテストデータが作成されるのですが、

+------+--------+ 
|  ID  |  kind  |
+------+--------+ 
|   1  |        |
+------+--------+ 
|   2  |   200  |
+------+--------+ 

 だと、以下の例外が発生します。

-------------------------------------------------------------------------
org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外が発生しました。理由はorg.postgresql.util.PSQLException: ERROR: column "kind" is of type integer but expression is of type character varying
	at org.seasar.framework.util.PreparedStatementUtil.executeUpdate(PreparedStatementUtil.java:45)
	at org.seasar.extension.jdbc.impl.BasicUpdateHandler.execute(BasicUpdateHandler.java:75)
	at org.seasar.extension.jdbc.impl.BasicUpdateHandler.execute(BasicUpdateHandler.java:65)
        :
(以下、省略)                      
-------------------------------------------------------------------------
 読んで時の如くなのですが、数値タイプのフィールドに対して、文字をセットしているよ、
というエラーですね。

 ダミーの数値をセットできる場合はいいのですが、明示的にnull をセットしてテストを
行わなければいけない場合がちょっと困ります。

 ちなみに、
+------+--------+ 
|  ID  |  kind  |
+------+--------+ 
|   1  |  null  |
+------+--------+ 
|   2  |   200  |
+------+--------+ 
 とやっても、同じエラーになります。

-- 
::: 株式会社ワウワウ・コミュニケーションズ http://www.wowcom.co.jp/
:::   ITシステム・インテグレートDiv.
:::  Web・マーケティング&コマンドセンターUnit.
:::   松山 大樹 - [E-MAIL ADDRESS DELETED]





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