2012-02-28 113 views
1

我想開發一個使用Hibernate 4和Spring 3.1的Web項目。我在applicationContenxt.xml中聲明瞭sessionFactory bean。Spring3.1&Hibernate4配置。無法加載類[org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider]

<bean id="sessionFactory" scope="singleton" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
    </bean> 

我想使用Oracle數據庫,所以我的hibernate.cfg.xml文件是:

<session-factory> 
     <!-- Database connection settings --> 
     <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
     <property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property> 
     <property name="connection.username">****</property> 
     <property name="connection.password">****</property> 
     <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> 

     <!-- 
      Enable c3p0 connection pooling, because hibernate pooling is not 
      prod-ready. Apparently connection.provider_class is needed in 
      hibernate 3+ 
     --> 
     <property name="connection.provider_class"> 
     org.hibernate.connection.C3P0ConnectionProvider</property> 
     <!-- <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> --> 
     <property name="c3p0.max_size">100</property> 
     <property name="c3p0.min_size">1</property> 
     <property name="c3p0.idle_test_period">30</property> 

     <!-- Echo all executed SQL to stdout for debugging --> 
     <property name="show_sql">true</property> 

     <!-- All the entity classes for hibernate to check for annotations here 
--> 
     <mapping class="data.Event" /> 

當我運行應用程序。我得到了例外:

1543 [Thread-2] ERROR org.springframework.web.context.ContextLoader - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.service.jdbc.connections.spi.ConnectionProvider] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:377) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:278) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723) 
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226) 
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

我無法解決問題,因爲我絕對是Spring和Hibernate的初學者。

有沒有人對這個問題有任何想法。

+0

你確定擁有所有hibernate和c3po的依賴關係? – tom 2012-02-28 15:01:57

回答

4

改變這個(你引用休眠3,這是休眠V4正確的類):

<bean id="sessionFactory" class="*org.springframework.orm.hibernate4.LocalSessionFactoryBean*"> 
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
</bean> 

你可能需要這個(如果使用maven)

<dependency> 
<groupId>org.hibernate</groupId> 
<artifactId>hibernate-core</artifactId> 
<version>4.0.0.Final</version> 
<type>jar</type> 
<scope>compile</scope> 
</dependency> 
+1

它不起作用。我有java.lang.ClassNotFoundException:org.springframework.orm.hibernate4.LocalSessionFactoryBean。我錯過了任何罐子? – erencan 2012-02-28 15:13:14

+0

肯定看起來像它 – NimChimpsky 2012-02-28 15:15:30

+0

但我有org.springframework.orm-3.1.0.M2.jar – erencan 2012-02-28 15:26:31

相關問題