【问题标题】:Where is the EnversSchemaGenerator in Hibernate 5.1?Hibernate 5.1 中的 EnversSchemaGenerator 在哪里?
【发布时间】:2016-09-16 14:56:55
【问题描述】:
【问题讨论】:
标签:
java
hibernate
generator
database-schema
hibernate-envers
【解决方案1】:
要以编程方式导出架构,另一种方式是
ServiceRegistry serviceRegistry =(StandardServiceRegistryImpl) new StandardServiceRegistryBuilder()
.configure("hibernate.cfg.xml")
.build();
MetadataImplementor metadata = (MetadataImplementor) new MetadataSources(serviceRegistry).buildMetadata();
SchemaExport schemaExport = new SchemaExport(metadata);
schemaExport.setOutputFile("hbm2schema.sql");
schemaExport.create(true, true);
( (StandardServiceRegistryImpl) serviceRegistry ).destroy();
【解决方案2】:
在以前的 Hibernate 版本中,您必须分别从实体和 Envers 生成 sql。
但现在不再需要了。只需像提到的那样生成它们,envers 将与它们一起生成。 (_AUTH 表)
【解决方案3】:
如果你想在 Hibernate 5.xx 中导出 sql 文件中的表可以使用以下代码
StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder().applySetting("hibernate.dialect", "org.hibernate.spatial.dialect.postgis.PostgisDialect"); // dialect
MetadataSources metadataSources = new MetadataSources(registryBuilder.build());
PathMatchingResourcePatternResolver resourceLoader = new PathMatchingResourcePatternResolver();
new LocalSessionFactoryBuilder(null, resourceLoader, metadataSources).scanPackages("com.xxx");
Metadata metadata = metadataSources.buildMetadata();
new SchemaExport().setFormat(true).setOutputFile("export.sql").createOnly(EnumSet.of(TargetType.STDOUT, TargetType.SCRIPT), metadata);