当前位置: 首页 > 知识库问答 >
问题:

HiberNate5.4.15.final缺少SessionFactoryImplementor.get属性()方法

冯澄邈
2023-03-14

我正在使用Hibernate5.4.15.fianl版本连接到DB2数据库。创建SessionWorks时,我收到以下错误:

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

我尝试了在网络上找到的所有可能的组合来获取会话工厂对象 1。从上面的配置对象:

    Configuration config = legacyBootStraping();
    sessionFactory = config.buildSessionFactory();
     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();
     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 --

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

及早回应真的很感谢。我已经尝试了这里提到的大多数帖子,比如清理以前编译的代码,尝试删除一些持久性类版本等等。但是对我来说没有锻炼。

共有1个答案

段坚
2023-03-14

我能够解决这个问题。在我的工作环境中。类加载器加载了更多的jar文件。加载顺序有冲突。我找到了先加载hibernate lib,然后再加载其余部分的方法。

 类似资料:
  • 我在我的应用程序中使用Spring 4.3.0.RELEASE和Hibernate 5.0.9.Final 如果我更新HiberNate 5.2.0。最终,一切正常。看来Spring 4.3.0与HiberNate 5.0不兼容,对吗?我找不到任何关于不支持HiberNate 5.0的信息。 在Hibernate 5.2中,这种方法是存在的,在Hibernate 5.0中,该方法还不存在(只需在U

  • 问题内容: 我在应用程序中使用Spring 4.3.0.RELEASE和Hibernate 5.0.9.Final一起使用,我不断 如果我更新了Hibernate 5.2.0.Final,一切正常。看来Spring 4.3.0与Hibernate 5.0不兼容,对吗?我找不到关于不支持Hibernate 5.0的任何信息。 在Hibernate 5.2中,该方法存在,在Hibernate 5.0中

  • 问题内容: C#具有用于声明和使用属性的语法。例如,可以声明一个简单的属性,如下所示: 也可以在属性中添加一些逻辑,如下所示: 无论是否具有逻辑,属性的使用方式与字段相同: 我对Java或C#都不陌生-我已经使用了很多东西,而且我总是想念Java中使用属性语法。我在这个问题中读到“在Java7中或将来几乎不可能添加属性支持”,但是坦率地说,我发现在讨论,论坛,博客,评论和JSR中需要挖掘太多的工作

  • 我正在VSCode中使用OpenAPI 3编写一个API文档,扩展为OpenAPI(Swagger)Editor v4.9.1。直到今天它都运行良好-突然我的文档在所有模式声明中充满了“属性”错误。错误是:

  • 我有以下JAXB对象: 我使用JAXB编组程序将对象转换为XML: 它运行平稳,没有任何异常,但是,结果总是缺少元素键。我试图将其改为Attribute,但它也不起作用。以下是输出示例: 我曾尝试将键更改为另一个名称,例如AuthKey,但它仍然缺失。我做错了什么? 编辑我发现了问题,这是因为我的键的值是空的。如果它包含值,则将其写入XML。然而,您能解释一下为什么在XMLElement中,我写了

  • 反应组分 如何在组件中声明输入组件?