在 DBUnit 中使用 BLOB

Using BLOB in DBUnit

我必须测试 class,我们从 Oracle 的 XMLTYPE 列中检索数据。我们正在使用 BLOB 进行转换,因为系统也准备在 MySQL 中 运行:

BLOB salePlanXmlType = (BLOB) jdsLoad.getValueCell(0, "SALEPLAN");

在 DBUnit 中,我们首先创建 table,然后加载数据。加载部分很有趣,但我使用找到的提示 here.

设法加载了两个 XML

无论如何,我无法在 DBUnit 中创建一个 BLOB 类型的 table。这是我尝试执行的脚本:

CREATE TABLE TSHT_SALEPLAN
(
  SALEPLANCODE  INTEGER,
  VENDORCODE    VARCHAR(10),
  HOTELCODE     INTEGER,
  SALEPLAN      BLOB
); 

当我运行使用这个脚本进行测试时,出现以下错误:

java.sql.SQLException: Wrong data type: BLOB in statement 
[CREATE TABLE     TSHT_SALEPLAN
(
  SALEPLANCODE  INTEGER,
  VENDORCODE      VARCHAR(10),
  HOTELCODE     INTEGER,
  SALEPLAN      BLOB]
    at org.hsqldb.jdbc.Util.throwError(Unknown Source)
    at org.hsqldb.jdbc.jdbcPreparedStatement.executeUpdate(Unknown Source)

我不明白,因为hsqldb似乎支持BLOB。

如果我更改 BLOB 列定义并使用 VARBINARY,它就可以工作。但是随后在我的代码中转换为 Blob 会引发异常。

有人在 DBUnit 的创建 table 语句中使用过 BLOB 吗?

异常来自不支持 BLOB 的旧版本 HSQLDB(可能是 1.8)。使用最新版本 2.3.x jar 代替。