【问题标题】:Hibernate 5.4.15.final missing SessionFactoryImplementor.getProperties() methodHibernate 5.4.15.final 缺少 SessionFactoryImplementor.getProperties() 方法
【发布时间】:2020-05-15 07:47:16
【问题描述】:

我使用hibernate 5.4.15.fianl 版本连接DB2 数据库。创建 SessionFactory 时出现以下错误:

   *Exception in thread "main" java.lang.NoSuchMethodError: org/hibernate/engine/spi/SessionFactoryImplementor.getProperties()Ljava/util/Map;
    at org.hibernate.engine.query.spi.QueryPlanCache.<init>(QueryPlanCache.java:85)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:259)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:468)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)

使用Configuration类对象配置属性,

Configuration config = new Configuration();

config.setProperty("hibernate.connection.driver_class", "com.ibm.db2.jcc.DB2Driver");
config.setProperty("hibernate.connection.url", url);
config.setProperty("hibernate.connection.sslConnection", "true");`enter code here`
String fmtHomeDir = FMTEnvironment.getFMT_HOME_DIR();
String certPath= fmtHomeDir + File.separator + "security" +File.separator +"TGenClientTrust2.jks";
config.setProperty("hibernate.connection.sslTrustStoreLocation",certPath);
config.setProperty("hibernate.connection.sslTrustStorePassword", ****);

config.setProperty("hibernate.connection.username", username);
config.setProperty("hibernate.connection.password", password);
config.setProperty("hibernate.dialect", "org.hibernate.dialect.DB2Dialect");
//optional to fix cmd issue
config.setProperty("hibernate.connection.characterEncoding", "UTF-8");
config.setProperty("hibernate.current_session_context_class", "thread");

// end-cmd issue
config.setProperty(Environment.SHOW_SQL, String.valueOf(false));

// login property
config.setProperty("log4j.logger.org.hibernate.SQL", "info");
config.setProperty("log4j.logger.org.hibernate.type", "trace");

// adding entity annotations
config.addClass(Categories.class);
config.addClass(Functions.class);

我尝试了在网上找到的所有可能的组合来获取 sessionfactory 对象, 1.从上面的配置对象:

    Configuration config = legacyBootStraping();
    sessionFactory = config.buildSessionFactory();
  1. BootStrapRegistryBuilder 和元数据
     BootstrapServiceRegistryBuilder bootstrapRegistryBuilder = new BootstrapServiceRegistryBuilder();
        bootstrapRegistryBuilder.applyClassLoader( ClassLoader.getSystemClassLoader() );
        BootstrapServiceRegistry bootstrapRegistry = bootstrapRegistryBuilder.build();
        StandardServiceRegistryBuilder standardRegistryBuilder = new StandardServiceRegistryBuilder( 
        bootstrapRegistry );
        standardRegistryBuilder.applySettings(getSettings());
        StandardServiceRegistry standardRegistry =standardRegistryBuilder.build();
        MetadataSources sources = new MetadataSources( standardRegistry );
        sources = getConfigMetadata(sources);
        MetadataBuilder metadataBuilder = sources.getMetadataBuilder();
        Metadata metadata = metadataBuilder.build() 
        sessionFactory = metadata.getSessionFactoryBuilder().build();
  1. 使用 StandardServiceRegistryBuilder 进行配置
     Configuration config = getLegacyBootStrapConfig(); // get the above configuration 
        StandardServiceRegistryBuilder stdServBuilder = new StandardServiceRegistryBuilder();
        ServiceRegistry serviceRegistry = stdServBuilder.applySettings(config.getProperties()).build();
        sessionFactory = config.buildSessionFactory(serviceRegistry);

每个调用都直接/间接到达休眠类: SessionFactoryImpl 构造函数行:259 --> this.queryPlanCache = new QueryPlanCache( this ); QueryPlanCache --> 调用SessionFactoryImplementor类方法getProperties()

getProperties() 方法不是此类的一部分并获得异常:org/hibernate/engine/spi/SessionFactoryImplementor.getProperties()Ljava/util/Map;

非常感谢您尽早回复。我已经尝试过这里提到的大多数帖子,例如清理以前编译的代码,尝试删除一些持久性类版本等,但对我来说没有任何锻炼。

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    我能够解决这个问题。在我的工作环境中。类加载器加载了几个 jar 文件。加载顺序存在冲突。我找到了先加载休眠库的修复程序,然后再加载其余库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-18
      • 2019-07-11
      • 2017-05-03
      • 2019-03-11
      • 2015-10-01
      • 2019-05-05
      • 2021-11-04
      • 1970-01-01
      相关资源
      最近更新 更多