在Hibernate 4.3.x中,有一个类getClassMapping(className)的方法org.hibernate.cfg.Configuration。但是在Hibernate 5.x中,这个getClassMapping(className)方法被从Configuration类中删除。
Hibernate-5中的代码替换是什么?
请在这个移民问题上提供帮助。
发布于 2015-10-17 01:37:43
我已发布到阔叶树商业,因为他们也需要PersistentClass
我一直在使用Hibernate 5工具,其中的一些变化.要获得元数据,现在使用Serviceloader:
package org.broadleafcommerce.openadmin.server.dao;
import org.hibernate.boot.SessionFactoryBuilder;
import org.hibernate.boot.spi.MetadataImplementor;
import org.hibernate.boot.spi.SessionFactoryBuilderFactory;
import org.hibernate.boot.spi.SessionFactoryBuilderImplementor;
public class EntityMetaData implements SessionFactoryBuilderFactory {
private static final ThreadLocal<MetadataImplementor> meta = new ThreadLocal<>();
@Override
public SessionFactoryBuilder getSessionFactoryBuilder(MetadataImplementor metadata, SessionFactoryBuilderImplementor defaultBuilder) {
meta.set(metadata);
return defaultBuilder;
}
public static MetadataImplementor getMeta() {
return meta.get();
}
}您将需要该文件:
/resources/META-INF/services/org.hibernate.boot.spi.SessionFactoryBuilderFactory使用完全限定的类名,在我的示例中是:
org.broadleafcommerce.openadmin.server.dao.EntityMetaData发布于 2015-10-13 08:04:28
获取PersisterCreationContext的一个对象,然后尝试如下:
PersistentClass persistentClass =
persisterCreationContext.getMetadata().getEntityBinding(className);请检查此链接 (示例3.8 )。本机引导--将所有这些放在一起(),以了解如何在Hibernate 5.x中获取standardRegistry、元数据和sessionFactory。
现在,当我们从persisterCreationContext中提取元数据时,我们已经有了元数据,所以我们可以立即获得任何实体所需的PersistentClass对象。
SessionFactory sessionFactory = metadata.getSessionFactoryBuilder().build();
PersistentClass persistentClass = metadata.getEntityBinding(className);发布于 2017-04-27 08:53:13
在Hibernate 3和4中,您会做这样的事情
URL configFileURL = getResource(); //some method to get hold of the location of your hibernate.cfg.xml
Configuration configuration = (new Configuration()).configure(configFileURL);
Iterator classMappings = configuration.getClassMappings();
while (classMappings.hasNext()) {
PersistentClass persistentClass = (PersistentClass) classMappings.next();
//do somthing
}在Hibernate 5中,像这样初始化元数据
URL configFileURL = getResource(); //some method to get hold of the location of your hibernate.cfg.xml
StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure(configFileURL).build();
Metadata metaData = new MetadataSources(standardRegistry).getMetadataBuilder().build();并对元数据使用getEntityBindings()
Collection<PersistentClass> entityBindings = metadata.getEntityBindings();
Iterator<PersistentClass> iterator = entityBindings.iterator();
while (iterator.hasNext()) {
PersistentClass persistentClass = iterator.next();
//do somthing
}https://stackoverflow.com/questions/32780664
复制相似问题