在DBUnit中使用BLOB

时间:2015-03-04 14:39:49

标签: blob hsqldb dbunit

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

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

在DBUnit中,首先我们创建表,然后加载数据。加载部分很有趣,但我设法使用here找到的提示加载了两个XML。

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

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的创建表语句中使用了BLOB吗?

1 个答案:

答案 0 :(得分:2)

异常来自旧版本的HSQLDB(可能是1.8),它不支持BLOB。请改用最新版本的2.3.x jar。