我在哪里可以获得Hibernate 5中org.hibernate.cfg.Configuration下的PersistentClass对象的映射?

时间:2016-11-29 14:30:38

标签: hibernate configuration hbm2ddl hibernate-5.x

在Hibernate 3中,在 org.hibernate.cfg.Configuration 类中有一个 Map classes 属性,其中包含 org.hibernate.mapping类型的对象.PersistentClass

在Grails应用程序中(在封面下使用hibernate)我正在扩展一个扩展org.hibernate.cfg.Configuration的类。这使我可以使用Map类并执行以下操作:

for(PersistentClass pc : classes.values()) {
   for(Iterator iterator = pc.getTable().getForeignKeyIterator(); iterator.hasNext(); ) {
       ForeignKey fk = (ForeignKey) iterator.next();               
       iterator.remove();      
 }
}

基本上,我正在删除某些第三方表的外键。

我想升级到Hibernate 5,但是新的Configuration类没有我依赖的Map类。

  1. 如何获取PersistentClass对象的地图,以便我可以继续删除其外键?

  2. 如果不再通过配置完成,我该如何访问持久对象?通过什么课?

  3. enter image description here

    请帮忙。我被卡住了。

1 个答案:

答案 0 :(得分:0)

我认为首先,我们应该得到StandardServiceRegistry实例,如下所示:

StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure(configFileURL).build();

然后我们可以从这个StandardServiceRegistry实例获取Metadata实例,例如:

Metadata metaData = new MetadataSources(standardRegistry).getMetadataBuilder().build();

之后,我们可以从该metaData实例获取所有PersistentClasses,如下所示:

Collection<PersistentClass> entityBindings = metadata.getEntityBindings();

这就是你需要的吗?