首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate 5.4.15最后丢失的SessionFactoryImplementor.getProperties()方法

Hibernate 5.4.15最后丢失的SessionFactoryImplementor.getProperties()方法
EN

Stack Overflow用户
提问于 2020-05-15 07:47:16
回答 1查看 233关注 0票数 0

我使用hibernate 5.4.15.fianl版本连接到DB2数据库。在创建SessionFactory时,我将得到以下错误:

代码语言:javascript
复制
   *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)

使用配置类对象配置属性,

代码语言:javascript
复制
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对象,1。从上面的配置对象:

代码语言:javascript
复制
    Configuration config = legacyBootStraping();
    sessionFactory = config.buildSessionFactory();

  1. BootStrapRegistryBuilder和Metada

代码语言:javascript
复制
     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

代码语言:javascript
复制
     Configuration config = getLegacyBootStrapConfig(); // get the above configuration 
        StandardServiceRegistryBuilder stdServBuilder = new StandardServiceRegistryBuilder();
        ServiceRegistry serviceRegistry = stdServBuilder.applySettings(config.getProperties()).build();
        sessionFactory = config.buildSessionFactory(serviceRegistry);

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

getProperties()方法不是该类的一部分,并获得异常:getProperties

早期的反应是非常感谢的。我已经尝试过这里提到的大多数文章,比如清理前面的编译代码,尝试删除一些持久性类版本等等,但对我来说没有任何解决办法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-23 08:42:13

我解决了这个问题。在我的工作环境中。类加载器加载了更多的jar文件。负载顺序中存在冲突。我找到了加载hibernate lib的修复程序,然后是其余的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61814273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档