2.4发布,hibernate 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.springframework.orm.hibernate3.LocalDataSourceConnectionProvider] 在org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:192)[hibernate-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)[hibernate-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)[hibernate-core-4.2.0.Final-redhat-1.jar:4.2.0.Final-redhat-1] at 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.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.spi.ConnectionProvider 在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个
答案 0 :(得分:0)
从堆栈跟踪判断你是在一个较新的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集成的更多信息,请检查the reference guide。
如上所述,不再需要HibernateTemplate
,而应使用普通的Hibernate API来实现存储库。更多信息here。
您应该已经拥有适当的交易管理设置,但以防查看参考指南的this section。
答案 1 :(得分:0)
我添加了Hibernate jar 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 真正 更新&LT; /丙&GT; - &GT; 假LT; /丙&GT; net.sf.ehcache.hibernate.SingletonEhCacheProvider&LT; /丙&GT; 真LT; /丙&GT; - &GT;