在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类。
答案 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();
这就是你需要的吗?