7

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
Community
  • 1
  • 1
jvos
  • 157
  • 3
  • 10
  • Check gradle dependency tree using "gradle dependencies" command, maybe dependencies are not resolved as you expect. Another alternative can use decompiler (i.e. Idea has really nice one) and check SessionFactoryImplementor to validate version. – Juan Rada Jul 21 '16 at 18:05
  • Thanks, I added the output for the runtime dependencies for the tests. Could it be that the dependency tree for jadira.usertype referencing hibernate 5.0.1 version jars be the cause? – jvos Jul 21 '16 at 19:22

3 Answers3

12

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?

Naros
  • 19,928
  • 3
  • 41
  • 71
5

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

2

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.

mathi
  • 1,127
  • 12
  • 19