Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring 4.3.1 + Hibernate 5.2.1 creating SessionFactoryImplementor.getProperties noSuchMethod exception

I am aware of this question and the Spring JIRA issue it references, however, I am using the latest versions of both Hibernate and Spring and still get the same error indicated by the stacktrace below when I run my unit tests :

    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [E:\business\projects\model\build\classes\test\testContext-model-hibernate.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Properties;
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:756)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:128)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:108)
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:251)
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
    ... 45 more
Caused by: java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Properties;
    at org.jadira.usertype.spi.shared.AbstractUserTypeHibernateIntegrator.integrate(AbstractUserTypeHibernateIntegrator.java:192)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:275)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:483)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:707)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:723)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:372)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:454)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:439)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
    ... 60 more

Here's a snippet from my gradle build file containing the versions of the hibernate and spring jars I use :

            'org.hibernate.common:hibernate-commons-annotations:5.0.1.Final',
        'org.hibernate:hibernate-core:5.2.1.Final',
        'org.hibernate:hibernate-entitymanager:5.2.1.Final',
        'org.hibernate:hibernate-orm-modules:5.2.1.Final',
        'org.hibernate:hibernate-search:5.5.4.Final',
        'org.hibernate:hibernate-search-orm:5.5.4.Final',
        'org.hibernate:hibernate-search-engine:5.5.4.Final',
        'org.springframework.security:spring-security-core:4.1.1.RELEASE',
        'org.springframework:spring-aop:4.3.1.RELEASE',
        'org.springframework:spring-aspects:4.3.1.RELEASE',
        'org.springframework:spring-beans:4.3.1.RELEASE',
        'org.springframework:spring-context:4.3.1.RELEASE',
        'org.springframework:spring-context-support:4.3.1.RELEASE',
        'org.springframework:spring-core:4.3.1.RELEASE',
        'org.springframework:spring-expression:4.3.1.RELEASE',
        'org.springframework:spring-orm:4.3.1.RELEASE',
        'org.springframework:spring-tx:4.3.1.RELEASE',

Could this be caused by something else I am unaware of?

EDIT : added output of gradle dependencies task, test runtime lines :

testRuntime - Runtime dependencies for source set 'test'.
+--- commons-lang:commons-lang:2.6
+--- org.apache.commons:commons-lang3:3.4
+--- commons-logging:commons-logging:1.2
+--- commons-validator:commons-validator:1.5.1
|    +--- commons-beanutils:commons-beanutils:1.9.2
|    |    +--- commons-logging:commons-logging:1.1.1 -> 1.2
|    |    \--- commons-collections:commons-collections:3.2.1 -> 3.2.2
|    +--- commons-digester:commons-digester:1.8.1
|    +--- commons-logging:commons-logging:1.2
|    \--- commons-collections:commons-collections:3.2.2
+--- javax.mail:javax.mail-api:1.5.5
+--- joda-time:joda-time:2.9.4
+--- net.sf.dozer:dozer:5.5.1
|    +--- commons-beanutils:commons-beanutils:1.9.1 -> 1.9.2 (*)
|    +--- org.apache.commons:commons-lang3:3.2.1 -> 3.4
|    +--- org.slf4j:slf4j-api:1.7.5 -> 1.7.21
|    \--- org.slf4j:jcl-over-slf4j:1.7.5
|         \--- org.slf4j:slf4j-api:1.7.5 -> 1.7.21
+--- net.sf.dozer:dozer-spring:5.5.1
+--- org.apache.logging.log4j:log4j-core:2.6.2
|    \--- org.apache.logging.log4j:log4j-api:2.6.2
+--- org.apache.logging.log4j:log4j-1.2-api:2.6.2
|    +--- org.apache.logging.log4j:log4j-api:2.6.2
|    \--- org.apache.logging.log4j:log4j-core:2.6.2 (*)
+--- org.apache.logging.log4j:log4j-api:2.6.2
+--- org.apache.poi:poi-ooxml:3.14
|    +--- org.apache.poi:poi:3.14
|    |    \--- commons-codec:commons-codec:1.10
|    +--- org.apache.poi:poi-ooxml-schemas:3.14
|    |    \--- org.apache.xmlbeans:xmlbeans:2.6.0
|    |         \--- stax:stax-api:1.0.1
|    \--- com.github.virtuald:curvesapi:1.03
+--- org.apache.poi:poi-ooxml-schemas:3.14 (*)
+--- org.apache.velocity:velocity:1.7
|    +--- commons-collections:commons-collections:3.2.1 -> 3.2.2
|    \--- commons-lang:commons-lang:2.4 -> 2.6
+--- org.freemarker:freemarker:2.3.23
+--- org.jadira.usertype:usertype.core:5.0.0.GA
|    +--- org.hibernate:hibernate-entitymanager:5.0.1.Final -> 5.2.1.Final
|    |    +--- org.jboss.logging:jboss-logging:3.3.0.Final
|    |    +--- org.hibernate:hibernate-core:5.2.1.Final
|    |    |    +--- org.jboss.logging:jboss-logging:3.3.0.Final
|    |    |    +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
|    |    |    +--- org.javassist:javassist:3.20.0-GA
|    |    |    +--- antlr:antlr:2.7.7
|    |    |    +--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1
|    |    |    +--- org.jboss:jandex:2.0.0.Final
|    |    |    +--- com.fasterxml:classmate:1.3.0
|    |    |    +--- dom4j:dom4j:1.6.1
|    |    |    +--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final
|    |    |    |    \--- org.jboss.logging:jboss-logging:3.3.0.Final
|    |    |    \--- javax.enterprise:cdi-api:1.1-PFD
|    |    |         +--- javax.el:el-api:2.2
|    |    |         +--- org.jboss.spec.javax.interceptor:jboss-interceptors-api_1.1_spec:1.0.0.Beta1
|    |    |         +--- javax.annotation:jsr250-api:1.0
|    |    |         \--- javax.inject:javax.inject:1
|    |    +--- dom4j:dom4j:1.6.1
|    |    +--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final (*)
|    |    +--- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final
|    |    +--- org.javassist:javassist:3.20.0-GA
|    |    \--- org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1
|    +--- org.slf4j:slf4j-api:1.7.12 -> 1.7.21
|    \--- org.jadira.usertype:usertype.spi:5.0.0.GA
|         \--- org.slf4j:slf4j-api:1.7.12 -> 1.7.21
+--- org.ostermiller:utils:1.07.00
+--- org.postgresql:postgresql:9.4.1209.jre7
+--- org.slf4j:slf4j-api:1.7.21
+--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final (*)
+--- org.hibernate:hibernate-core:5.2.1.Final (*)
+--- org.hibernate:hibernate-entitymanager:5.2.1.Final (*)
+--- org.hibernate:hibernate-orm-modules:5.2.1.Final
+--- org.hibernate:hibernate-search:5.5.4.Final
|    \--- org.hibernate:hibernate-search-orm:5.5.4.Final
|         +--- org.hibernate:hibernate-search-engine:5.5.4.Final
|         |    +--- org.hibernate.common:hibernate-commons-annotations:5.0.1.Final (*)
|         |    +--- org.apache.lucene:lucene-core:5.3.1
|         |    +--- org.apache.lucene:lucene-backward-codecs:5.3.1
|         |    |    \--- org.apache.lucene:lucene-core:5.3.1
|         |    +--- org.apache.lucene:lucene-misc:5.3.1
|         |    |    \--- org.apache.lucene:lucene-core:5.3.1
|         |    +--- org.apache.lucene:lucene-analyzers-common:5.3.1
|         |    |    \--- org.apache.lucene:lucene-core:5.3.1
|         |    +--- org.apache.lucene:lucene-facet:5.3.1
|         |    |    +--- org.apache.lucene:lucene-core:5.3.1
|         |    |    \--- org.apache.lucene:lucene-queries:5.3.1
|         |    \--- org.jboss.logging:jboss-logging:3.3.0.Final
|         \--- org.hibernate:hibernate-core:5.0.9.Final -> 5.2.1.Final (*)
+--- org.hibernate:hibernate-search-orm:5.5.4.Final (*)
+--- org.hibernate:hibernate-search-engine:5.5.4.Final (*)
+--- org.springframework.security:spring-security-core:4.1.1.RELEASE
|    +--- aopalliance:aopalliance:1.0
|    +--- org.springframework:spring-aop:4.3.1.RELEASE
|    |    +--- org.springframework:spring-beans:4.3.1.RELEASE
|    |    |    \--- org.springframework:spring-core:4.3.1.RELEASE
|    |    |         \--- commons-logging:commons-logging:1.2
|    |    \--- org.springframework:spring-core:4.3.1.RELEASE (*)
|    +--- org.springframework:spring-beans:4.3.1.RELEASE (*)
|    +--- org.springframework:spring-context:4.3.1.RELEASE
|    |    +--- org.springframework:spring-aop:4.3.1.RELEASE (*)
|    |    +--- org.springframework:spring-beans:4.3.1.RELEASE (*)
|    |    +--- org.springframework:spring-core:4.3.1.RELEASE (*)
|    |    \--- org.springframework:spring-expression:4.3.1.RELEASE
|    |         \--- org.springframework:spring-core:4.3.1.RELEASE (*)
|    +--- org.springframework:spring-core:4.3.1.RELEASE (*)
|    \--- org.springframework:spring-expression:4.3.1.RELEASE (*)
+--- org.springframework:spring-aop:4.3.1.RELEASE (*)
+--- org.springframework:spring-aspects:4.3.1.RELEASE
|    \--- org.aspectj:aspectjweaver:1.8.9
+--- org.springframework:spring-beans:4.3.1.RELEASE (*)
+--- org.springframework:spring-context:4.3.1.RELEASE (*)
+--- org.springframework:spring-context-support:4.3.1.RELEASE
|    +--- org.springframework:spring-beans:4.3.1.RELEASE (*)
|    +--- org.springframework:spring-context:4.3.1.RELEASE (*)
|    \--- org.springframework:spring-core:4.3.1.RELEASE (*)
+--- org.springframework:spring-core:4.3.1.RELEASE (*)
+--- org.springframework:spring-expression:4.3.1.RELEASE (*)
+--- org.springframework:spring-orm:4.3.1.RELEASE
|    +--- org.springframework:spring-beans:4.3.1.RELEASE (*)
|    +--- org.springframework:spring-core:4.3.1.RELEASE (*)
|    +--- org.springframework:spring-jdbc:4.3.1.RELEASE
|    |    +--- org.springframework:spring-beans:4.3.1.RELEASE (*)
|    |    +--- org.springframework:spring-core:4.3.1.RELEASE (*)
|    |    \--- org.springframework:spring-tx:4.3.1.RELEASE
|    |         +--- org.springframework:spring-beans:4.3.1.RELEASE (*)
|    |         \--- org.springframework:spring-core:4.3.1.RELEASE (*)
|    \--- org.springframework:spring-tx:4.3.1.RELEASE (*)
+--- org.springframework:spring-tx:4.3.1.RELEASE (*)
+--- com.yobu:yobu-mi:
+--- junit:junit:4.12
|    \--- org.hamcrest:hamcrest-core:1.3
+--- org.springframework:spring-test:4.3.1.RELEASE
|    \--- org.springframework:spring-core:4.3.1.RELEASE (*)
\--- org.mockito:mockito-all:2.0.2-beta

(*) - dependencies omitted (listed previously)

BUILD SUCCESSFUL
like image 532
jvos Avatar asked Jul 21 '16 17:07

jvos


3 Answers

The Jadira library is not compatible with Hibernate 5.2. The getProperties method was removed from the SessionFactoryImplementor interface in that release.

You should be able to revert to the Hibernate 5.1.x release stream and maintain compatibility perhaps?

like image 59
Naros Avatar answered Oct 31 '22 13:10

Naros


New version of Jadira was released in Aug, 6.0.0.GA - solved the problem.

like image 5
Michal Aron Avatar answered Oct 31 '22 12:10

Michal Aron


check whether more than one jar having EntityManagerFactory interfaces, if yes remove the jar which is don't have getProperties method.

getProperties is not direct method of SessionFactoryImplementor. it's parent interface EntityManagerFactory method, which is extended like follows

SessionFactoryImplementor extends SessionFactory
SessionFactory extends EntityManagerFactory
EntityManagerFactory interface have getProperties method

in my case i found two jars have this interface

WEB-INF/lib/hibernate-jpa-2.1-api-1.0.0.Final.jar
WEB-INF/lib/persistence-api-1.0.jar

i checked the interfaces in both jars where hibernate-jpa-2.1-api-1.0.0.Final jar have getProperties method in EntityManagerFactory interface
persistence-api-1.0 jar dont have getProperties method in EntityManagerFactory interface.

so i removed persistence-api-1.0.jar and now working fine.

like image 2
mathi Avatar answered Oct 31 '22 12:10

mathi