首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法org.hibernate.cfg.Configuration.getClassMapping(className)的Hibernate从4.3.x迁移到5.x

方法org.hibernate.cfg.Configuration.getClassMapping(className)的Hibernate从4.3.x迁移到5.x
EN

Stack Overflow用户
提问于 2015-09-25 10:58:31
回答 4查看 11.3K关注 0票数 25

在Hibernate 4.3.x中,有一个类getClassMapping(className)的方法org.hibernate.cfg.Configuration。但是在Hibernate 5.x中,这个getClassMapping(className)方法被从Configuration类中删除。

Hibernate-5中的代码替换是什么?

请在这个移民问题上提供帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-17 01:37:43

已发布到阔叶树商业,因为他们也需要PersistentClass

我一直在使用Hibernate 5工具,其中的一些变化.要获得元数据,现在使用Serviceloader:

代码语言:javascript
复制
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();
    }
}

您将需要该文件:

代码语言:javascript
复制
/resources/META-INF/services/org.hibernate.boot.spi.SessionFactoryBuilderFactory

使用完全限定的类名,在我的示例中是:

代码语言:javascript
复制
org.broadleafcommerce.openadmin.server.dao.EntityMetaData
票数 6
EN

Stack Overflow用户

发布于 2015-10-13 08:04:28

获取PersisterCreationContext的一个对象,然后尝试如下:

代码语言:javascript
复制
PersistentClass persistentClass = 
persisterCreationContext.getMetadata().getEntityBinding(className);

请检查此链接 (示例3.8 )。本机引导--将所有这些放在一起(),以了解如何在Hibernate 5.x中获取standardRegistry、元数据和sessionFactory。

现在,当我们从persisterCreationContext中提取元数据时,我们已经有了元数据,所以我们可以立即获得任何实体所需的PersistentClass对象。

代码语言:javascript
复制
SessionFactory sessionFactory = metadata.getSessionFactoryBuilder().build();
PersistentClass persistentClass = metadata.getEntityBinding(className);
票数 2
EN

Stack Overflow用户

发布于 2017-04-27 08:53:13

在Hibernate 3和4中,您会做这样的事情

代码语言:javascript
复制
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中,像这样初始化元数据

代码语言:javascript
复制
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()

代码语言:javascript
复制
Collection<PersistentClass> entityBindings = metadata.getEntityBindings();
Iterator<PersistentClass> iterator = entityBindings.iterator();
  while (iterator.hasNext()) {
    PersistentClass persistentClass = iterator.next();    
    //do somthing
  }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32780664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档