2015-03-04 4 views
1

Мне нужно проверить класс, в котором мы извлекаем данные из Oracle, из столбца XMLTYPE. Мы используем BLOB для литья, потому что система готова работать в MySQL тоже:Использование BLOB в DBUnit

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

В DBUnit, сначала мы создаем таблицу, а затем загрузку данных. Загрузка была забавной, но мне удалось загрузить два XML, используя найденные советы here.

В любом случае мне не удается создать таблицу в DBUnit с типом BLOB. Вот сценарий, я пытаюсь выполнить:

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) 

Что я не понимаю, потому что BLOB, кажется, поддерживается по hsqldb.

Если я изменяю определение столбца BLOB и использую VARBINARY, он работает. Но тогда кастинг в Blob в моем коде генерирует исключение.

Кто-нибудь использовал BLOB в инструкции создания таблицы с помощью DBUnit?

ответ

2

Исключение составляет старая версия HSQLDB (возможно, 1.8), которая не поддерживает BLOB. Вместо этого используйте последнюю версию 2.3.x.

+0

Большое спасибо! Увидев решение, я удивляюсь, почему я об этом не думал. Во всяком случае, он работает сейчас (с версией 2.3.2)! – LeoLozes

Смежные вопросы