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