Spring Test: невозможно вставить шестнадцатеричное значение в hsqldb из файла import.sql - PullRequest
1 голос
/ 02 марта 2012

Я выполняю тесты JUnit с пружиной и гибернацией. Он отлично работает, когда я использую базу данных MySql на моем ПК. Чтобы запустить этот тест в любой среде, я установил виртуальную базу данных: hsqldb. И я вставляю данные из файла import.sql. Вот моя конфигурация:

enter code here

и persistence.xml:

<properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
        <property name="hibernate.hbm2ddl.auto" value="create" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.format_sql" value="true" />
        <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider" />
    </properties>

Итак, когда я запускаю тестовый класс, данные (в файле import.sql) вставляются в базу данных, и тесты запускаются. Моя проблема в том, что у меня есть некоторые шестнадцатеричные значения, которые не вставляются в базу данных, и я не знаю почему. Вот пример шестнадцатеричных данных в import.sql:

INSERT INTO rejeu_commande_xml (order_id, compressed_request) VALUES (10000108000000001, 0x777d010078daed5ddd72e336967e15962f2649cdb8c57f8a1e4513b57e1cd54896cb523b99dca8281292b14d910a49b9edbdda9ad9a7d8abad5c6db6e6729f60f2267992054052a2fe2c9222a91fa32fda220102e4013ee07c07070795bfbc4c4de619382eb4ad6fafb80fec15032cdd36a035f9f6ead3a0755dbe625c4fb30ccdb42df0edd52b70affe52ad582e7fa33b40f3407dee7af614383dc7000e834ab3dc6faf9e3c6f76532a7df9f2e583ed68d6047cd0ed694977a6577e8e1bf4fc1bb94a8ffc55b5a26b1eaa74f200c6c001960735b3dda8f67bad41a5b435a9025e3ce058e4b720b4af454d1a09222b5e6bec98bd1601e0ae476259be56479a2e0a92381ae94aa51479a8a2cf1d549cfe5ab70d506d7e7a401545ef54c817234135d077577996e3af59fe9ae706ac74c3cb3792fc4151843fb2dc0dcba227a3792b0698);

Эти данные определены как LONGBLOB в моей базе данных MySql, и я думаю, что этот тип не поддерживается HSQLDB.

Как я мог вставить эти данные, чтобы получить их из моего тестового класса?

Большое спасибо заранее! Aurea

1 Ответ

3 голосов
/ 03 марта 2012

Формат шестнадцатеричного значения для HSQLDB требует одинарных кавычек вокруг шестнадцатеричной строки.Оба приведенных ниже примера должны работать.

INSERT INTO rejeu_commande_xml (order_id, compressed_request) VALUES (10000108000000001, x'777d010078da')
INSERT INTO rejeu_commande_xml (order_id, compressed_request) VALUES (10000108000000001, '777d010078da')

Hibernate должен использовать LONGVARBINARY, VARBINARY или BLOB для типа данных HSQLDB вместо LONGBLOB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...