一尘不染

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

hibernate

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

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

请帮助解决此迁移问题。


阅读 618

收藏
2020-06-20

共1个答案

一尘不染

发布到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();
    }
}

您将需要以下文件:

/resources/META-INF/services/org.hibernate.boot.spi.SessionFactoryBuilderFactory

具有完全限定的类名,在我的示例中为:

org.broadleafcommerce.openadmin.server.dao.EntityMetaData
2020-06-20