Spring Test:无法从import.sql文件中将十六进制值插入hsqldb

时间:2012-03-02 15:46:23

标签: hsqldb spring-test

我正在使用spring和hibernate执行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);

此数据在我的MySql数据库中定义为LONGBLOB,我认为HSQLDB不支持此类型。

我如何插入这些数据以便从我的测试类中获取它?

非常感谢你! 金叶

1 个答案:

答案 0 :(得分:3)

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。