0

2.4发布,休眠3.3.2ga。在创建会话工厂时。我收到以下错误。请给我一个解决方案

<bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
            <property name="dataSource" ref="erpUSDataSource" />

            <property name="annotatedClasses">
                <list>
                    <value>com.bean.OrderDetailsVO</value>
                    <value>com.bean.OrderVO</value>
                </list>

            </property>
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</prop>
                    <prop key="hibernate.show_sql">true</prop>
                    <!--  <prop key="hibernate.hbm2ddl.auto">update</prop> -->
                    <!-- <prop key="hibernate.use_outer_join">false</prop>
                    <prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop>
                    <prop key="hibernate.hibernate.cache.use_query_cache">true</prop> -->
                </props>
            </property>
     </bean>
     <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"/>
     </bean>

原因:org.hibernate.HibernateException:无法在 org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:192) [hibernate] 实例化连接提供程序 [org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider] -core-4.2.0.Final-redhat-1.jar:4.2.0.Final-redhat-1] 在 org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.initiateService(ConnectionProviderInitiator.java:114) [休眠-core-4.2.0.Final-redhat-1.jar:4.2.0.Final-redhat-1] 在 org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.initiateService(ConnectionProviderInitiator.java:54) [休眠-core-4.2.0.Final-redhat-1.jar:4.2.0.Final-redhat-1] 在 org.hibernate.service.internal.StandardServiceRegistryImpl。在 org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl. java:176) [hibernate-core-4.2.0.Final-redhat-1.jar:4.2.0.Final-redhat-1] ... 90 更多原因:java.lang.ClassCastException: org.springframework.orm .hibernate3.LocalDataSourceConnectionProvider 不能在 org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:189) [hibernate-core-4.2] 的 org.hibernate.service.jdbc.connections.spi.ConnectionProvider .0.Final-redhat-1.jar:4.2.0.Final-redhat-1] ... 94 更多hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) [hibernate-core-4.2.0.Final-redhat-1.jar:4.2.0.Final-redhat-1] ... 90 更多: java.lang.ClassCastException: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider 不能在 org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider ( ConnectionProviderInitiator.java:189) [hibernate-core-4.2.0.Final-redhat-1.jar:4.2.0.Final-redhat-1] ... 94 更多hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) [hibernate-core-4.2.0.Final-redhat-1.jar:4.2.0.Final-redhat-1] ... 90 更多: java.lang.ClassCastException: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider 不能在 org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider ( ConnectionProviderInitiator.java:189) [hibernate-core-4.2.0.Final-redhat-1.jar:4.2.0.Final-redhat-1] ... 94 更多hibernate3.LocalDataSourceConnectionProvider 不能在 org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:189) [hibernate-core-4.2. 0.Final-redhat-1.jar:4.2.0.Final-redhat-1] ... 94 更多hibernate3.LocalDataSourceConnectionProvider 不能在 org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:189) [hibernate-core-4.2. 0.Final-redhat-1.jar:4.2.0.Final-redhat-1] ... 94 更多

4

2 回答 2

0

从您正在部署在较新的 JBoss 服务器上的堆栈跟踪来看,该服务器默认情况下随 hibernate4 一起提供,因为这样的 hibernate3 类将无法工作。

要么你必须在你的war文件中包含你自己的hibernate库才能使用hibernate3(然后你可能需要修复其他几个类加载问题)。或者你切换到使用 Hibernate4。

当使用 hibernate4 时,就没有更多了HibernateTemplate(因为自 2006 年发布 hibernate 3.0.1 以来,它应该被视为已弃用!)。如果您严重依赖HibernateTemplate.

对于您的配置,只需切换到 hibernate4 类。

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="erpUSDataSource" />
    <property name="annotatedClasses">
        <list>
            <value>com.bean.OrderDetailsVO</value>
            <value>com.bean.OrderVO</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <!--  <prop key="hibernate.hbm2ddl.auto">update</prop> -->
            <!-- <prop key="hibernate.use_outer_join">false</prop>
            <prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop>
            <prop key="hibernate.hibernate.cache.use_query_cache">true</prop> -->
        </props>
    </property>
</bean>

使用的也是如此HibernateTransactionManager,也需要切换到hibernate4,这只是改变包。

有关 Spring 和 hibernate 集成的更多信息,请查看参考指南

如前所述,HibernateTemplate您应该使用普通的 Hibernate API 来实现存储库。更多信息在这里

您应该已经有适当的事务管理设置,但以防万一检查参考指南的这一部分

于 2014-01-23T07:52:29.750 回答
0

我添加了 Hibernate jars 4.0.1.Final,包括 Hibernate Entitymanagaer、Hibernate-commons annotation、antlr 2.x、antlr-runtime2.x ..

我猜我遇到了问题,因为不包括上面的罐子。我已经添加了上面的罐子我的问题得到了解决

com.bean.OrderDetailsVO com.bean.OrderVO org.hibernate.dialect.SQLServer2008Dialect true update</prop> --> false</prop> net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop> true</prop> - ->

于 2014-01-26T16:11:24.937 回答