簡體   English   中英

Hibernate 5.4.15.final 缺少 SessionFactoryImplementor.getProperties() 方法

[英]Hibernate 5.4.15.final missing SessionFactoryImplementor.getProperties() method

我正在使用 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 class object 來配置屬性,

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);

我嘗試了在 web 上找到的所有可能組合以獲得 sessionfactory object,1. 從上面的配置 object:

    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);

每個調用直接/間接到達 hibernate class: SessionFactoryImpl constructor line:259 --> this.queryPlanCache = new QueryPlanCache( this ); QueryPlanCache --> 調用 SessionFactoryImplementor class 方法 getProperties()

getProperties() 方法不屬於此 class 並獲得異常:org/hibernate/engine/spi/SessionFactoryImplementor.getProperties()Ljava/util/Map;

早期的反應真的很感激。 我已經嘗試過這里提到的大多數帖子,比如清理以前編譯的代碼,嘗試刪除一些持久性 class 版本等,但對我來說沒有任何鍛煉。

我能夠解決這個問題。 在我的工作環境中。 class 加載程序加載了更多 jar 文件。 加載順序存在沖突。 我找到了先加載 hibernate lib 然后是 rest 的修復程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM