2012-09-13 51 views
0

我在春天有以下休眠配置,服务器启动后很长时间,但没有连接到数据库(DB上没有模式)。所以它只是给出一个错误信息或者用<prop key="hibernate.hbm2ddl.auto">create</prop>创建模式。休眠不启动

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method = "close"> 
    <property name="driverClass" value="com.mysql.jdbc.Driver"/> 
    <property name="jdbcUrl" value="jdbc:mysql://dburl:3306"/> 
    <property name="user" value="user"/> 
    <property name="password" value="pass!"/> 
</bean> 


<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 

    <property name="mappingResources"> 
     <list> 
      <value>waf/resources/User.hbm.xml</value> 
      <value>waf/resources/Post.hbm.xml</value> 
      <value>waf/resources/Position.hbm.xml</value> 
      <value>waf/resources/Comment.hbm.xml</value> 
     </list> 
    </property> 

    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">validate</prop> 
      <!-- C3P0 CONNECTION POOL --> 
      <prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>    
      <prop key="c3p0.acquire_increment">1</prop>    
      <prop key="c3p0.idle_test_period">100</prop> 
      <prop key="c3p0.max_size">20</prop> 
      <prop key="c3p0.max_statements">50</prop> 
      <prop key="c3p0.min_size">1</prop> 
      <prop key="c3p0.timeout">10</prop> 
     </props> 
    </property> 
    <property name="dataSource"> 
     <ref bean="dataSource"/> 
    </property> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory"> 
     <ref bean="sessionFactory"/> 
    </property> 
</bean> 

你们能帮我吗?

+0

你能告诉我们你的实体类吗? – shazinltc

+1

你的用户是否有授予的必要特权? – Gamb

回答

0

Hibernate不创建模式与hbm2ddl.auto。它只是创建| creates -drop |等表。

+0

是的,这就是我的意思......无论如何...服务器启动,但不连接到数据库。 – user1669594

0

通过HBM文件去,你给了如下..

验证代替创建

我希望这不会创建DDL。你能检查一下吗?还是这是一个错字?

+0

是的,这不会创建,这会产生错误。我尝试了两个,创建和验证。在这两种情况下,服务器都会在一段时间后启动并且没有错 – user1669594

+0

即使我更改网址或用户名并传递给DB,服务器启动时也没有错误... – user1669594

+0

对于那些有同样问题的人,休眠4中的C3P0ConnectionProvider位于不同的位置。不是org.hibernate.connection,而是org.hibernate.service.jdbc.connections.internal。仍然没有工作。我删除了<! - C3P0 CONNECTION POOL - >的代码并工作。 – user1669594

0

如果您使用连接池(您提到的是c3po),添加到其他人所建议的内容中,则在创建会话Factory时将尝试使用连接池支持的数据源,该连接池又将连接到数据库预创建和池连接。当你说它没有连接到数据库时 - 你怎么知道的?日志中是否有错误?我已经看到,如果Hibernate会话工厂无法自行配置,它会在日志中引发错误。