当前位置: 首页 > 面试题库 >

在嵌入式HSQL数据库中创建架构的最佳方法

百里文景
2023-03-14
问题内容

我目前正在使用以下设置在嵌入式数据库上运行测试之前在嵌入式数据库中创建架构

在我的应用程序上下文中

<jdbc:embedded-database id="dataSource" type="HSQL">
    <jdbc:script location="classpath:createSchema.sql" />
</jdbc:embedded-database>

createSchema.sql

create schema ST_TEST AUTHORIZATION DBA;

hibernate属性

<properties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
    <property name="hibernate.default_schema" value="ST_TEST"/>
    <property name="hibernate.hbm2ddl.auto" value="create-drop" />
    <property name="hibernate.show_sql" value="true" />
    <property name="hibernate.use_sql_comments" value="true" />
    <property name="hibernate.cache.use_second_level_cache" value="false" />
</properties>

我的问题是这是最好的方法。或者我可以在属性中使用其他架构名称吗?或在jdbc:embedded-database元素中设置架构名称


问题答案:

默认情况下,HSQL创建一个称为PUBLIC的架构。来源:HSQL文档

看到模式名称在测试中从未出现过(命名为查询/实体管理器进行交互),您可以更改hibernate属性以使用此PUBLIC模式

<properties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
    <property name="hibernate.default_schema" value="PUBLIC"/>
    <property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>

或者
只是从属性列表中删除default_schema,并且无论如何它都使用PUBLIC

<properties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
    <property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>


 类似资料:
  • 我的数据层中有几个实体存储在特定的模式中。例如: 我正在尝试设置H2嵌入式数据库,以便对我的数据层进行集成测试。我正在测试中使用DataJpaTest注释来自动配置H2嵌入式数据库。但是,表的创建失败,因为在DB初始化时未创建架构虚拟。 在测试用例中创建表之前,有没有关于如何创建模式的想法? 我尝试使用@Sql(statements=“CREATE SCHEMA IF NOT EXISTS DUM

  • 我希望能够在使用HSQL的单元/集成测试中支持以下Sybase 15 ASE语法。。。 HSQL无法识别临时表的命名方式,并且对字符犹豫不决。相反,HSQL希望使用这样的东西… 或者,根据他们的文档,HSQL 也支持大多数 ANSI-92 SQL,但是 Sybase ASE 15 对 ANSI-92 SQL 没有很好的支持,包括如何创建临时表,因此以下内容在 Sybase 中不起作用,但在 HSQ

  • 问题内容: 在阅读了有关数据库架构迁移和版本的许多问题之后,我提出了一种在更新过程中安全地更新数据库架构的方案。基本思想是,在更新期间,我们将数据库导出到文件中,删除并重新创建所有表,然后重新导入所有内容。那里没有什么花哨或冒险的地方。 问题在于该系统在某种程度上是“病毒的”,这意味着仅 添加 列或表是安全的,因为删除列或表会在重新导入数据时引起问题。通常,忽略这些列就可以了,但问题是实际上已重构

  • 最近我开始在后端工作(对于我的个人项目),我选择了nestjs,对于ORM,我选择了typeorm。 现在我需要自定义存储库,这样我就可以拥有一个抽象的基本存储库,它实现所有需要的方法,然后在实际的实体存储库中继承这些方法。那么,我如何构建我的项目呢?我应该创建一个导出所有存储库的模块,还是有其他有效的方法?

  • 问题内容: 在MySQL数据库中存储IP地址的最佳字段类型和长度是什么? IPv6呢? 问题答案: 将IP存储为,然后使用和功能存储/检索IP地址。 样例代码:

  • 问题内容: 如果创建Oracle dblink,则无法直接访问目标表中的LOB列。 例如,使用以下命令创建一个dblink: 之后,您可以执行以下操作: 除非该列是LOB,否则您将收到错误: 这是有据可查的限制。 同一页上建议您将值提取到本地表中,但这有点…杂乱无章: 还有其他想法吗? 问题答案: 是的,这很混乱,不过我想不出办法避免这种情况。 您可以通过将临时表创建放入存储过程中(并使用“立即执