【问题标题】:Create schema before hbm2ddl在 hbm2ddl 之前创建架构
【发布时间】:2014-09-12 21:42:05
【问题描述】:

我想用内存中的 hsqldb 测试我的程序。要创建表,我使用hibernate.hbm2ddl.auto=create 但是我得到了一个例外,因为在创建表之前没有创建在实体类中通过注释定义的模式。现在我正在寻找在 hibernate.hbm2ddl.auto 运行之前创建模式的机会。删除模式对我来说不是一个机会,因为我的程序需要它们。

我的问题和this 差不多。不同的是我不使用弹簧,所以该解决方案对我不起作用。

【问题讨论】:

  • @kamil 我使用了 hsqldb DB,但切换到 H2 以便您的解决方案有效。

标签: java hibernate jpa hsqldb


【解决方案1】:

假设您使用H2 数据库,您可以提供init 命令以使用jdbc 连接url 运行。例如:

your.jdbc.url=jdbc:h2:mem:;DB_CLOSE_DELAY=-1;INIT=create schema IF NOT EXISTS your_schema

很遗憾,hibernate jira 上的问题还没有解决https://hibernate.atlassian.net/browse/HHH-5665

【讨论】:

  • 感谢您的帮助。它与 javax.persistence.jdbc.url=jdbc:h2:mem:test:;DB_CLOSE_DELAY=-1;INIT=\\;runscript 从 '~/workspace/project/src/test/resources/sql/createschema.sql ';在 sql 中我创建了我所有的模式
【解决方案2】:

从 Hibernate 5 开始,有一种更简洁、更独立于 db 的方式,它也适用于 hsqldb。添加此配置属性:

hibernate.hbm2dll.create_namespaces=true

【讨论】:

    猜你喜欢
    • 2016-03-14
    • 1970-01-01
    • 2020-05-20
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多