Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringJDBC抛出java.lang.NoSuchMethodError:org.hibernate.Session.connection()Ljava/sql/connection;_Java_Spring_Hibernate - Fatal编程技术网

SpringJDBC抛出java.lang.NoSuchMethodError:org.hibernate.Session.connection()Ljava/sql/connection;

SpringJDBC抛出java.lang.NoSuchMethodError:org.hibernate.Session.connection()Ljava/sql/connection;,java,spring,hibernate,Java,Spring,Hibernate,我的问题和这个一样- 使用SpringJDBCTemplate时出现以下异常 java.lang.NoSuchMethodError: org.hibernate.Session.connection()Ljava/sql/Connection; 上面链接中的公认答案建议将Hibernate降级为Spring支持的版本 这对我来说是不可接受的,因为我需要最新版本的Hibernate来使用它的新特性(同时也从错误修复中获益) 有没有办法让它在不降级hibernate的情况下工作?使用的事务管理器

我的问题和这个一样-

使用SpringJDBCTemplate时出现以下异常

java.lang.NoSuchMethodError: org.hibernate.Session.connection()Ljava/sql/Connection;
上面链接中的公认答案建议将Hibernate降级为Spring支持的版本

这对我来说是不可接受的,因为我需要最新版本的Hibernate来使用它的新特性(同时也从错误修复中获益)


有没有办法让它在不降级hibernate的情况下工作?

使用的事务管理器是JPA事务管理器。这是早期我们通过Spring使用JPA时留下的。我们不再这样做了,所以我不希望Spring在Hibernate版本更新时中断。在搜索bean定义时,我发现对JPA/Hibernate的引用不正确,并将其删除。应用程序现在运行良好

更改为:

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">  
    <property name="entityManagerFactory" ref="entityManagerFactory" />  
</bean>

为此:

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
</bean>

我之所以得到这个,是因为我已经从Hibernate4升级到Hibernate5,但在web.xml中仍然有对4的引用

是:


冬眠过滤器
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
sessionFactoryBeanName
会话工厂
改为:

<filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
    <init-param>
        <param-name>sessionFactoryBeanName</param-name>
        <param-value>sessionFactory</param-value>
    </init-param>
</filter>

冬眠过滤器
org.springframework.orm.hibernate5.support.OpenSessionInViewFilter
sessionFactoryBeanName
会话工厂

那么您目前有哪些版本的Spring和Hibernate?Spring升级到了4.1.6版;Hibernate的版本是4.3.8。@duffymo你可以更进一步:为什么是Java?C或汇编程序不能为您做什么?Spring3.0.5和Hibernate是4.3.8。我可以升级Spring,但还有几个其他项目可以相互操作,它们都在使用Spring3.0.5。从3.x到4.x的迁移将在许多地方破坏代码,并需要更改代码。我不想在这个时候这样做…也许以后我们进行全面检修时。此外,为什么Spring甚至依赖Hibernate?我期望SpringJDBC只依赖于JDBC,你不能期望Spring的一个非常旧的版本自动与Hibernate中最新的不兼容的更改兼容。关于评论的第二部分:异常的完整堆栈跟踪是什么?SpringJDBC对Hibernate没有任何依赖性,我怀疑您得到的错误来自SpringJDBC代码。
<filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
    <init-param>
        <param-name>sessionFactoryBeanName</param-name>
        <param-value>sessionFactory</param-value>
    </init-param>
</filter>