Hibernate根据实体类和实体类映射文件生成数据表模型:
以前的常见例子,定义一个Class,在main方法的内容为:
-
//默认读取hibernate.cfg.xml文件
-
Configuration cfg=
new Configuration().configure();
-
-
//Create(script,export)方法根据持久类和映射文件先删除架构后创建数据库架构。
-
//有两个参数,第一个为true就是把DDL语句输出到控制台,
-
//第二个为true就是根据持久类和映射文件先执行删除再执行创建操作
-
SchemaExport export=
new SchemaExport(cfg);
-
export.create(
true,
true);
可正常使用。
到了Hibernate5.0.1Final换成:
-
ServiceRegistry serviceRegistry =
new StandardServiceRegistryBuilder().configure().build();
-
-
MetadataImplementor metadataImplementor = (MetadataImplementor)
-
new MetadataSources(serviceRegistry).buildMetadata();
-
-
SchemaExport export =
new SchemaExport(serviceRegistry, metadataImplementor);
-
export.create(
true,
true);
Hibernate5.1Final又换了:
-
ServiceRegistry serviceRegistry =
new StandardServiceRegistryBuilder().configure().build();
-
Metadata metadata =
new MetadataSources(serviceRegistry).buildMetadata();
-
SchemaExport schemaExport =
new SchemaExport();
-
schemaExport.create(EnumSet.of(TargetType.DATABASE), metadata);
SchemaExport cannot be resolved to a type。
之前的是hibernate5.5.4-search实际是5.0.9那可以运行上面5.0.1的例子就对了,现在换了hibernate5.2.5上面的方法找不到。现在下面的可以运行。
不要自己新建TargetType的枚举,只须引用org.hibernate.tool.schema.TargetType就好。
TargetType为:
-
public
enum TargetType {
-
/**
-
* Export to the database.
-
*/
-
DATABASE,
-
/**
-
* Write to a script file.
-
*/
-
SCRIPT,
-
/**
-
* Write to {@link System#out}
-
*/
-
STDOUT;
-
}
如果要设置5.1Final之后的,可参考:http://bbs.csdn.net/topics/391942178?page=1