如何在HSQLDB中创建多个目录

时间:2017-07-14 06:44:59

标签: hibernate hsqldb

使用嵌入式HSQLDB进行单元测试时,似乎无法正确处理hibernate实体映射文件中定义的模式和/或目录。 hibernate映射看起来像:

<class name="ca.zl.Orders" table="Orders" schema="dbo" catalog="db1">

将属性"hibernate.connection.url"设置为"jdbc:hsqldb:mem:db1",我总是遇到以下错误

  

org.hibernate.tool.hbm2ddl.SchemaExport:user缺少未找到的权限或对象:DB1 org.hibernate.tool.hbm2ddl.SchemaExport:模式名称无效:DBO   这似乎是由HSQLDB引起的,默认情况下只有一个名为“PUBLIC”的目录,请参见此处的文档。

我无法更改hibernate实体映射,我不想使用其他数据库引擎(我知道H2DB可以处理这个)。任何人都可以了解如何在这个单元测试环境中使HSQLDB工作吗?

2 个答案:

答案 0 :(得分:0)

Hibernate ORM中的Schema Tooling系统不会创建指定的数据库,模式或相应的表空间。在启动Hibernate应用程序之前,最终用户可以确保这些对象存在。

在您的情况下,您尝试使用名为dbo的非默认架构,在这种情况下,我的建议是使用Hibernate提供的import.sql脚本功能,以便根据您在引导程序中的需要,您可以选择创建架构(如果不存在)。这应该有效地使该模式在内存数据库中可用,并且模式工具过程的其余部分应该按预期工作。

答案 1 :(得分:0)

在运行测试之前,重命名目录并创建架构:

ALTER CATALOG PUBLIC RENAME TO DB1
CREATE SCHEMA DBO