hibernate 不在空数据库上创建模式
Posted
技术标签:
【中文标题】hibernate 不在空数据库上创建模式【英文标题】:hibernate does not create schema on an empty databse 【发布时间】:2021-05-02 20:12:10 【问题描述】:我有以下 hibernate.cfg.xml 文件
问题是,当我运行迁移时,没有在数据库中创建架构。我想从头开始创建架构。它只生成 script.sql 文件。
这是我的主应用程序文件
public class DatabaseMigration
public static void main(String[] args)
StandardServiceRegistry s-s-r = new StandardServiceRegistryBuilder().configure("/META-INF/hibernate.cfg.xml").build();
Metadata meta = new MetadataSources(s-s-r).getMetadataBuilder().build();
SchemaExport schemaExport = new SchemaExport();
schemaExport.setHaltOnError(true);
schemaExport.setFormat(true);
schemaExport.setDelimiter(";");
schemaExport.setOutputFile("db-schema.sql");
schemaExport.createOnly(EnumSet.of(TargetType.SCRIPT), meta);
【问题讨论】:
“当我运行迁移” - 你到底做了什么?你跑了什么代码? 【参考方案1】:谢谢各位,我发现了错误。
schemaExport.createOnly(EnumSet.of(TargetType.SCRIPT), meta);是问题
目标仅指定 SCRIPT。
我已经用 DATABASE 替换了它,它可以工作。
【讨论】:
选择这个作为接受的答案,所以它显示为已解决。【参考方案2】:如果你使用的是spring boot,你可以完全放弃hibernate.cfg文件,直接进入resources > application.properties文件,把这一行移到文件中:
spring.jpa.hibernate.ddl-auto=create
Hibernate 应该在您每次重新启动应用程序时重新创建架构。
【讨论】:
我没有使用弹簧靴。它是一个独立的应用程序。以上是关于hibernate 不在空数据库上创建模式的主要内容,如果未能解决你的问题,请参考以下文章
为啥不在空的 Spark 集群上强制执行preferredLocations?
db.create_all() 在磁盘上但不在内存中创建模式
在 Postgresql 上创建模式时,Hibernate 忽略 @GeneratedValue