Hibernate 5.2.7 - java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties () Ljava / util / Map;

when using Hibernate 5.2.7 in a Gradle Java project to connect to MariaDB 10.1.19, I get an Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map;

Full stacktrace

  Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Map; at org.hibernate.internal.CacheImpl.<init>(CacheImpl.java:71) at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:28) at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:20) at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:58) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:259) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:233) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210) at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.getService(SessionFactoryServiceRegistryImpl.java:77) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:240) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:445) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:710) at quantitativeAnalysis.backend.dataCollector.dataCollectorManager.createFactory(dataCollectorManager.java:280) at quantitativeAnalysis.volatilityAnalyzer.volatilityDynamicImpl.openInstance(volatilityDynamicImpl.java:18) at frontend.MainFrame.main(MainFrame.java:96) 

I tried several approaches (other versions of Hibernate 5.2.6 and 5.2.3 ) and searched the Internet for help, but none of the suggestions worked.

An exception occurs here:

  Configuration configuration = new Configuration().configure(); StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); try{ factory = configuration.buildSessionFactory(ssrb.build()); }catch(Exception ex){ System.err.println("Failed to configure Sessionfactory"); ex.printStackTrace(); } 

I also tried the following code, producing the same result:

  final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() .configure() // configures settings from hibernate.cfg.xml .build(); try { factory = new MetadataSources(registry).buildMetadata().buildSessionFactory(); }catch(Exception ex){ System.err.println("Failed to configure Sessionfactory"); ex.printStackTrace(); } 

My hibernate.cfg.xml is as follows

 <session-factory> <!-- Database connection settings --> <!-- <property name="connection.driver_class">com.mysql.jdbc.Driver</property> --> <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3307/VolatilityData</property> <property name="connection.username">XXX</property> <property name="connection.password">XXX</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- --> <property name="hbm2dll.auto">create</property> <!-- mapping content --> <mapping resource="resources/BitcoinDaysDestroyed.hbm.xml"/> <mapping resource="resources/BitcoinPrice.hbm.xml"/> <mapping resource="resources/BitcoinTransactions.hbm.xml"/> </session-factory> 

The boxes I enable with Gradle are as follows:

 // Apply the java plugin to add support for Java apply plugin: 'java' // In this section you declare where to find the dependencies of your project repositories { // Use jcenter for resolving your dependencies. // You can declare any Maven/Ivy/file repository here. //jcenter() mavenCentral() maven { url "https://maven.elasticsearch.org/releases" } } dependencies { // The production code uses Guava compile 'com.google.guava:guava:20.0' //QuantitativeAnalysis // https://mvnrepository.com/artifact/com.toedter/jcalendar compile group: 'com.toedter', name: 'jcalendar', version: '1.4' // https://mvnrepository.com/artifact/javax.persistence/persistence-api compile group: 'javax.persistence', name: 'persistence-api', version: '1.0.2' // https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1' // https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.2' // https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore compile group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.5' // https://mvnrepository.com/artifact/org.hibernate/hibernate-core //compile group: 'org.hibernate', name: 'hibernate-core', version: '5.2.6.Final' //antlr-2.7.7.jar, compiled from src compile files('libs/antlr-2.7.7.jar') //classmate-1.3.0.jar, compiled from src compile files('libs/classmate-1.3.0.jar') //dom4j-1.6.1.jar, compiled from src compile files('libs/dom4j-1.6.1.jar') //antlr-2.7.7.jar, compiled from src compile files('libs/geronimo-jta_1.1_spec-1.1.1.jar') //jandex-2.0.3.Final.jar, compiled from src compile files('libs/jandex-2.0.3.Final.jar') //javassist-3.20.0-GA.jar, compiled from src compile files('libs/javassist-3.20.0-GA.jar') //jboss-logging-3.3.0.Final.jar, compiled from src compile files('libs/jboss-logging-3.3.0.Final.jar') //hibernate-commons-annotations-5.0.1.Final.jar, compiled from src compile files('libs/hibernate-commons-annotations-5.0.1.Final.jar') //hibernate-jpa-2.1-api-1.0.0.Final.jar, compiled from src compile files('libs/hibernate-jpa-2.1-api-1.0.0.Final.jar') //hibernate-core-5.2.7.Final.jar, compiled from src compile files('libs/hibernate-core-5.2.7.Final.jar') //c3p0-0.9.5.2, compiled from src compile files('libs/c3p0-0.9.5.2.jar') //hibernate-c3p0-5.2.7.Final.jar, compiled from src compile files('libs/hibernate-c3p0-5.2.7.Final.jar') //mchange-commons-java-0.2.11.jar, compiled from src compile files('libs/mchange-commons-java-0.2.11.jar') // https://mvnrepository.com/artifact/mysql/mysql-connector-java compile group: 'mysql', name: 'mysql-connector-java', version: '6.0.5' //QualitatitveAnalysis // https://mvnrepository.com/artifact/log4j/log4j compile group: 'log4j', name: 'log4j', version: '1.2.17' // https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch compile group: 'org.elasticsearch', name: 'elasticsearch', version: '2.1.0' // https://mvnrepository.com/artifact/org.elasticsearch.plugin/shield compile group: 'org.elasticsearch.plugin', name: 'shield', version: '2.1.0' // https://mvnrepository.com/artifact/com.google.code.gson/gson compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0' // https://mvnrepository.com/artifact/org.twitter4j/twitter4j-core compile group: 'org.twitter4j', name: 'twitter4j-core', version: '4.0.6' // https://mvnrepository.com/artifact/javax.json/javax.json-api compile group: 'javax.json', name: 'javax.json-api', version: '1.0' //jReddit Jar, compiled from src compile files('libs/jReddit-1.0.4-SNAPSHOT.jar') // Use JUnit test framework testCompile 'junit:junit:4.12' } 

Any help or advice is much appreciated.

+11
source share
3 answers

This problem is caused by having an old, incompatible copy of the JPA API in the classpath.

In particular:

  • javax.persistence: save-api: 1.0.2

Conflict with the correct version of the JPA 2.1 API:

  • org.hibernate.javax.persistence: hibernation-JPA-2,1-api: 1.0.0.Final

Unfortunately, Maven 3 still cannot handle the redistribution of the same artifacts that are sometimes necessary.

+10
source

What version of Gradle do you have?

I ask because I have the same error that occurs after upgrading Gradle from 3.5 to 4.3 . The same version of sleep mode ( 5.2.9 ), the same Spring Boot ( 1.5.8 ), but in Gradle 3.5. - OK, 4.3 crash.

I tested and the latest version worked great for me 3.5.1 . I tested versions from 4.0 to 4.4-rc-6 (the latest at the moment).

 distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-all.zip 
+5
source

So, is there a solution to the problem with Maven, in particular the incompatibility problem javax.persistence: persistence-api: 1.0.2

0
source

Source: https://habr.com/ru/post/1263091/


All Articles