【问题标题】:Hibernate creating Schemas on each application run?Hibernate 在每个应用程序运行时创建模式?
【发布时间】:2020-11-02 04:27:03
【问题描述】:

我已经使用 MVC 模式和 Hibernate 构建了一个 Web 应用程序。我正在尝试使用以下属性配置我的休眠以为我的类创建模式

<property name="hibernate.hbm2ddl.auto">create</property>

但是,我发现这会删除以前的现有架构并在每次应用程序运行时重新创建架构。无论如何,我是否将我的休眠配置为仅在我的第一次应用程序运行时创建模式,而对于任何未来的应用程序运行,只需更新现有数据库中的行?

【问题讨论】:

  • 试试<property name="hibernate.hbm2ddl.auto">create</property>
  • 语法工作正常。但是,每次我停止并重新运行我的应用程序时,它都会删除旧值并重新创建表。有没有办法我可以指示休眠仅在它们不存在时才创建表,否则只需更新其中的行
  • create 是创建模式破坏以前的数据。您可以使用update 进行更改,前提是它们不存在。其他两个选项是create-dropnone。但不确定这是否是您要求的。
  • 但如果我将其设为update,它不会在我的应用程序的第一次运行时创建任何模式
  • 四个可能的值是createupdatecreate-dropvalidate。不建议在生产环境中使用 create、update 或 create-drop。在您的本地,如果您没有架构,则应先使用create,然后使用update

标签: java spring hibernate spring-mvc hibernate-mapping


【解决方案1】:

正如 YomanTaMero 所说,而不是:

<property name="hibernate.hbm2ddl.auto">create</property>

试试这个:

<property name="hibernate.hbm2ddl.auto">update</property>

注意到上面的“更新”了吗?

【讨论】:

  • 但如果我将其设为update,它不会在我的应用程序的第一次运行时创建任何模式
  • @aelina update 如果架构不存在,将创建它,否则将更新现有架构。
猜你喜欢
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
  • 2019-07-10
相关资源
最近更新 更多