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
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?
New version of Jadira was released in Aug, 6.0.0.GA
- solved the problem.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With