Spring Test:无法从 import.sql 文件将十六进制值插入 hsqldb
Posted
技术标签:
【中文标题】Spring Test:无法从 import.sql 文件将十六进制值插入 hsqldb【英文标题】:Spring Test : can't insert a hexadecimal value into a hsqldb from import.sql file 【发布时间】:2012-03-02 15:46:23 【问题描述】:我正在使用 spring 和 hibernate 执行 JUnit 测试。当我在我的 PC 上使用 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】: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 应该对 HSQLDB 数据类型使用 LONGVARBINARY、VARBINARY 或 BLOB,而不是 LONGBLOB。
【讨论】:
以上是关于Spring Test:无法从 import.sql 文件将十六进制值插入 hsqldb的主要内容,如果未能解决你的问题,请参考以下文章
spring boot 无法从 application.yml 获取配置
spring - @ContextConfiguration 无法在 src/test/resources 中加载配置文件
Spring Batch Test - 无法自动装配。找不到“JobLauncherTestUtils”类型的 bean
Spring Boot Test 无法使用 LocalServerPort 注释自动连接端口
Spring Boot Test 失败说,由于缺少 ServletWebServerFactory bean,无法启动 ServletWebServerApplicationContext
Spring Boot Test 失败说,由于缺少 ServletWebServerFactory bean,无法启动 ServletWebServerApplicationContext