【问题标题】:Migration from Hibernate 3 to Hibernate 5: sessionFactory (MetadataImplementor) is null从 Hibernate 3 迁移到 Hibernate 5:sessionFactory (MetadataImplementor) 为 null
【发布时间】:2016-11-23 06:47:49
【问题描述】:
    public class EntityMetaData implements SessionFactoryBuilderFactory {

    // private static final ThreadLocal<MetadataImplementor> meta = new ThreadLocal<>();  // previously used, but did not work, so used HashMap

      private static final Map<String, MetadataImplementor> meta = new HashMap<>();
      private static final String METADATAKEY = "M";

    @Override
    public SessionFactoryBuilder getSessionFactoryBuilder(MetadataImplementor metadata, SessionFactoryBuilderImplementor defaultBuilder) {
    //  meta.set(metadata);

        meta.put(METADATAKEY, metadata);
        return defaultBuilder;  
    }

    public static MetadataImplementor getMeta() {
//        return meta.get();

        return meta.get(METADATAKEY);
    }
}

上面的代码在本地环境的tomcat 8中可以工作,但是在生产环境的tomcat 8中不能正常工作,因为getMeta()方法返回null。

在本地环境中,在服务器启动时调用getSessionFactoryBuilder 方法,以便它在本地工作,但在生产环境中getSessionFactoryBuilder 方法未调用因此getMeta() 返回null

任何帮助都将不胜感激。

请帮帮我。

【问题讨论】:

  • 请任何人都可以帮助我解决这个问题。这是一个production 问题。

标签: metadata tomcat8 spring-4 sessionfactory hibernate-5.x


【解决方案1】:

我终于找到了答案。

这是一个编译问题。 META-INF 文件夹不在 classes 文件夹中,因此在服务器启动期间未加载 metadata(意味着未调用 getSessionFactoryBuilder 方法)。在本地环境中,META-INFclasses 文件夹中。但是在生产环境中它不可用,所以尝试编译META-INF 并在classes 文件夹中可用,然后在它工作之后。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-18
    • 2022-12-12
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多