Hibernate从4.3.x迁移到5.x,用于方法org.hibernate.cfg.Configuration.getClassMapping(className)

Nir*_*tel 22 java hibernate hibernate-5.x

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

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

请帮助解决此迁移问题.

小智 5

发布了Broadleaf Commerce,因为他们还需要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();
    }
}
Run Code Online (Sandbox Code Playgroud)

您将需要该文件:

/resources/META-INF/services/org.hibernate.boot.spi.SessionFactoryBuilderFactory
Run Code Online (Sandbox Code Playgroud)

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

org.broadleafcommerce.openadmin.server.dao.EntityMetaData
Run Code Online (Sandbox Code Playgroud)