我正在使用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不支持此类型。
我如何插入这些数据以便从我的测试类中获取它?
非常感谢你! 金叶
答案 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。