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.youkuaiyun.com/topics/391942178?page=1
本文介绍了在Hibernate5中如何使用SchemaExport工具根据实体类和映射文件创建数据库表。从5.0.1到5.1Final,API有所变化,需注意TargetType的使用。在最新版本中,不再需要自定义TargetType枚举,而是直接引用org.hibernate.tool.schema.TargetType。
491

被折叠的 条评论
为什么被折叠?



