当尝试使用Hibernate存储bean时,我得到了Exception。
Caused by: java.lang.NoSuchMethodError: org.hibernate.SessionFactory.getCurrentSession()Lorg/hibernate/classic/Session;
at org.apacheextras.camel.component.hibernate.SpringTransactionStrategy$1.doInTransaction(SpringTransactionStrategy.java:43) ~[camel-hibernate-2.10.1.jar:2.10.1]
hibernate Spring配置如下。
<bean id="hibernate" class="org.apacheextras.camel.component.hibernate.HibernateComponent">
<property name="sessionFactory" ref="sessionFactory"/>
<property name="transactionStrategy" ref="springTransactionStrategy"/>
</bean>
<bean id="springTransactionStrategy" class="org.apacheextras.camel.component.hibernate.SpringTransactionStrategy">
<constructor-arg ref="sessionFactory"/>
<constructor-arg ref="transactionTemplate"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="hibernateProperties">
<value>
hibernate.hbm2ddl.auto=create
hibernate.dialect=org.hibernate.dialect.SQLServerDialect
show_sql=true
format_sql=true
</value>
</property>
</bean>
Hibernate版本如下。
<dependency>
<groupId>org.apache-extras.camel-extra</groupId>
<artifactId>camel-hibernate</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.12.Final</version>
<exclusions>
<exclusion>
<artifactId>xml-apis</artifactId>
<groupId>xml-apis</groupId>
</exclusion>
<exclusion>
<artifactId>cdi-api</artifactId>
<groupId>javax.enterprise</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>5.0.12.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.0.12.Final</version>
<exclusions>
<exclusion>
<artifactId>xml-apis</artifactId>
<groupId>xml-apis</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-envers</artifactId>
<version>5.0.12.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>5.0.12.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jpamodelgen</artifactId>
<version>5.0.12.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.3.6.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>5.3.6.Final</version>
</dependency>
我正在使用spring boot版本1.5.10.RELEASE及其派生的依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>1.5.10.RELEASE</version>
</dependency>
知道解决方案是什么?我发现从一个线程升级hibernate和spring版本但我的hibernate和spring已经是更高版本了。骆驼休眠怎么样?来自春季启动版。 (不幸的是,由于混合库,我必须使用1.5.0.RELEASE)
答案 0 :(得分:0)
我将hibernate版本升级到2.18.0并且我能够解决此错误。
<dependency>
<groupId>org.apache-extras.camel-extra</groupId>
<artifactId>camel-hibernate</artifactId>
<version>2.18.0</version>
</dependency>