簡體   English   中英

hibernate3.LocalDataSourceConnectionProvider無法強制轉換為ConnectionProvider

[英]hibernate3.LocalDataSourceConnectionProvider cannot be cast to ConnectionProvider

2.4發布,休眠3.3.2ga。 同時創建sessionfactory。 我遇到以下錯誤。 請給我一個解決方案

<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)上的連接提供者[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.initiateService(StandardServiceRegistryImpl.java:69)[hibernate-core-4.2 .0.Final-redhat-1.jar:4.2.0.Final-redhat-1],位於org.hibernate.service.internal.AbstractServiceRegist ryImpl.createService(AbstractServiceRegistryImpl.java:176)[hibernate-core-4.2.0.Final-redhat-1.jar:4.2.0.Final-redhat-1] ... 90更多原因:java.lang.ClassCastException :無法將org.hibernate.service.jdbc.connections.spi.ConnectionProvider轉換為org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:189)上的org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider [hibernate-core-4.2.0.Final-redhat-1.jar:4.2.0.Final-redhat-1] ...還有94個

從stacktrace來看,您正在部署在較新的JBoss服務器上,該服務器默認情況下隨hibernate4一起提供,因為此類hibernate3類無法正常工作。

您必須將自己的hibernate庫包含在war文件中才能使用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來實現存儲庫。 更多信息在這里

您應該已經具有正確的事務管理設置,但以防萬一,請參閱參考指南的這一部分

我添加了Hibernate jars 4.0.1.Final,其中包括Hibernate Entitymanagaer,Hibernate-commons批注,antlr 2.x,antlr-runtime2.x ..

我的猜測是由於不包括上述罐子,所以出現了問題。 我在罐子上方添加了我的問題,解決了

com.bean.OrderDetailsVO com.bean.OrderVO org.hibernate.dialect.SQLServer2008Dialect真實更新</ prop>->虛假</ prop> net.sf.ehcache.hibernate.SingletonEhCacheProvider </ prop>真實</ prop>- ->

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM