如何设置休眠。hbm2ddl.auto in Spring with Annotations and pure Java

How to set hibernate.hbm2ddl.auto in Spring with Annotations and pure Java

如何仅使用 Java 和注释在 Spring 中设置以下内容。

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

我是这应该是可能的,我相信让项目 xml 免费会更干净。

PS:这应该不重要,但我在 Heroku 上 运行 这个。

我认为没有开箱即用的 Java 注释用于 hbm2ddl。

Hibernate 使用标准 Java 持久性注释 (JPA) 加上一些 Hibernate 扩展注释。

参见:https://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/

一般来说,我宁愿建议您将设置外化到 属性 文件中,而不是将其硬编码到 Java class 中。实际上,自动模式生成通常是您只会在 test/staging 期间执行的操作。所以你可能有不同的环境和不同的设置。

将此添加到 dataSource() 所在的 class,它解决了我的问题。

final Properties hibernateProperties() {
    final Properties hibernateProperties = new Properties();

    hibernateProperties.setProperty("hibernate.hbm2ddl.auto", "update");
    hibernateProperties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
    hibernateProperties.setProperty("hibernate.show_sql", "true");

    return hibernateProperties;
}

完整示例在这里 https://github.com/arose13/Heroku-Spring-Postgres-Example

编辑PS:对于这一行hibernateProperties.setProperty("hibernate.hbm2ddl.auto","update");检查这个Whosebug question找出最佳值如果update不适合你。