【发布时间】:2014-09-22 18:23:43
【问题描述】:
在添加一个或多个具有数据库映射(JPA/hibernate)的类后,我希望 Hibernate 打印出必要的模式更新,以便我可以在数据库上执行它们(例如通过 FlyWay)。我不希望自动执行更新。
似乎可以对此进行一些控制的唯一属性如下
org.hibernate.tool.hbm2ddl=validate|update|create|create-drop|none
我不想自动更新/更改任何内容。我想将其设置为验证或无。当我这样做时,我看不到生成的架构。
我是经典的spring应用,以前使用hibernateSchemaExport类打印DDL。
SchemaExport schemaExport = new SchemaExport(cfg);
schemaExport.execute(true, false, false, false);
我可以在 Spring Boot 中使用类似的东西吗?
【问题讨论】:
-
如果您将其设置为 validate/none,那么您明确告诉它不要生成 DDL。 Spring Boot 只是标准的 Spring,在配置特性上有一些约定,以最大限度地减少您需要做的配置量。所以仍然可以使用
SchemaExport,和以前一样。 -
同意,但我不知道从哪里获取
Configuration cfg参数以传递给SchemaExport。在ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);之后我不能这样做,因为如果数据库没有正确的架构,那么应用程序已经崩溃了。我已将 hbm2ddl 设置为“验证”。也许将此设置为“无”可能会解决此问题,但我宁愿保留额外的检查。 -
您是否尝试将其设置为
none?如果架构无效,使用validate的全部意义在于启动失败。听起来您明确希望应用程序启动,尽管数据库不同步,但没有应用迁移。这就是none设置的用途。
标签: java spring hibernate jpa spring-boot