我在spring上有以下hibernate配置,服务器在很长一段时间后启动但没有连接到DB(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 :(得分:0)
Hibernate不会使用hbm2ddl.auto
创建架构。它只是创造了| creates-drop |等表。
答案 1 :(得分:0)
浏览HBM文件,您已经提供了以下内容..
验证而不是创建
我希望这不会创建DDL。你能检查一下吗?或者这是一个错字?
答案 2 :(得分:0)
如果您正在使用连接池(您提到的是c3po),则添加其他人提议的内容然后在创建会话工厂时,它将尝试使用连接池支持的数据源,而后者又将连接到数据库 - 创建和池连接。当你说它没有连接到数据库时 - 你怎么知道的?日志中是否有错误?我已经看到,如果Hibernate会话工厂无法自行配置,它会在日志中抛出错误。