【问题标题】:Can you set hibernate to drop tables before (re)creating it您可以在(重新)创建表之前设置休眠以删除表吗
【发布时间】:2018-01-31 14:39:08
【问题描述】:

我有一个 oracle 数据库和一个用 Java 编写的 spring API。我试图让它删除我的表,然后休眠在启动时重新创建它。如果表不存在,它们将按预期创建,我可以在控制台输出中看到它们的创建状态。但是,如果我停止并重新运行它,我将无法删除并重新创建它们。

我在 application.properties 文件中设置了休眠设置(包括在下面),但我尝试过的都没有。

hibernate.show_sql=true
hibernate.format_sql=true
hibernate.generate_ddl=true
hibernate.generate_ddl-auto=update
hibernate.dialect=org.hibernate.dialect.Oracle12cDialect

我尝试更改 create-drop 的更新,但没有成功。

任何想法我做错了什么?

【问题讨论】:

    标签: java spring oracle hibernate


    【解决方案1】:

    你可以把hibernate.generate_ddl-auto=update改成hibernate.generate_ddl-auto=create-drop或者试试hibernate.hbm2ddl.auto=create-drop

    如果使用 Spring JPA,则所需属性为 spring.jpa.hibernate.ddl-auto=create

    【讨论】:

    • “我尝试更改 create-drop 的更新,但没有成功。”这两种解决方案我都试过了。
    • 我有,是的。我尝试过的任何事情似乎都不会放弃表格。 :(
    • 你在使用 Spring JPA 吗?
    • hibernate.hbm2ddl.auto=create 在启动时删除表。检查你的服务器日志,在那里你可以找到Drop table if exists <your table name>
    • 是的,Spring JPA。 (我认为!!) --- 日志文件中没有与数据库相关的行。如果我在重新启动之前手动删除表,我只会得到与数据库相关的任何内容,然后它会显示创建表的内容。我会发布日志文件的副本,但我不确定如何发布。
    猜你喜欢
    • 2012-04-06
    • 2013-06-04
    • 2021-09-27
    • 2016-03-14
    • 1970-01-01
    • 2011-10-07
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多