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