2012-01-03 82 views
4

我有一個奇怪的問題,使用Spring和Hibernate。我開始使用Hibernate在hibernate.cfg.xml中使用此:休眠不會創建我的表

<property name="hbm2ddl.auto">create</property> 

它工作得很好,和Hibernate成功創建數據庫所需的表。 現在我使用Spring和我的豆用於applicationContext.xml中休眠看起來是這樣的:

<bean id="mySessionFactory" 
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="myDataSource" /> 
    <property name="mappingResources"> 
     <list> 
      <value>domain/Entity.hbm.xml</value> 
      <value>domain/Service.hbm.xml</value> 
      <value>domain/User.hbm.xml</value> 
      <value>domain/Arcos.hbm.xml</value> 
     </list> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
      <prop key="hibernate.hbm2dll.auto">create</prop> 
     </props> 
    </property> 
</bean> 

我不得不放棄由Hibernate創建的表在某些時候,但春節不創建它們。我試用create-drop而不是create(以防萬一有人問)。自從我使用Hibernate以來,我的數據庫模式發生了變化,我在我的代碼中使用了很多getBeans("...");,所以有點讓我費了很大力氣重新使用僅用於Hibernate的版本來創建表。我也可以手動創建表格,但使用這些框架的意義何在?

我確定我在某處做錯了什麼,但是我找不到它。控制檯提示錯誤,表示沒有名爲「」的表,因此它已成功連接到數據庫。

感謝您的時間:)

+0

您是否嘗試啓用show-sql \t true - 它可以幫助您。 – 2012-01-03 13:35:04

+0

恕我直言,使用ddl可以在重構代碼時給出意想不到的結果...考慮通過另一種機制(如Liquibase)管理您的ddl。 – aweigold 2012-01-06 20:08:12

+0

我會看看這個,謝謝你的建議! – Max 2012-01-11 11:30:29

回答

13

hibernate.hbm2dll.auto - >hibernate.hbm2ddl.auto

DLL =動態鏈接庫

DDL =數據定義語言

+0

糟糕!感謝指出,它解決了問題:) – Max 2012-01-03 13:46:19

1

有一個在你的代碼一個錯字

 <prop key="hibernate.hbm2ddl.auto">create</prop> 

in the soluti on