2013-05-17 15 views
3

我在HQL中使用HSQLDB,我注意到當應用程序啓動時,沒有在HSQLDB中創建表。直到所有表在HSQLDB中創建的第一個選擇或第一個插入爲止。有什麼辦法讓應用程序啓動時創建所有的表?如何讓Hibernate在啓動時創建表?

編輯在回答盤古:

我修改了我們的休眠CFG XML文件,以便它包含以下內容:

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

但表仍然在服務器啓動時沒有得到建立。它們只在第一次插入或選擇後才創建。你提到表將在創建Hibernate會話工廠時創建。我們的代碼在執行插入或選擇之前不調用Configuration.buildSessionFactory()。有沒有辦法在此之前創建表格?

回答

2

那麼這就是休眠一般如何工作。它在被調用時啓動。您可以創建一個空的構造函數,並在應用程序的開頭調用它,或者在您的web.xml中啓動它,您正在使用帶有servlet調用的Web應用程序。

如果您不讓程序知道您希望在程序啓動之初啓動hibernate,那麼在程序被告知或需要SessionFactory之前,它不會創建它。

你從我所知道的所有正確的語法。只需確保在程序開始時您希望它早些時候被調用。

Hibernate.org具有HibernateUtil.class的創建例如你可以通過修改添加一個空的構造函數時調用。

希望這有助於在應用程序開始時啓動Hibernate。

+0

好的我在程序開始時調用了Configuration.buildSessionFactory(),它可以工作。謝謝。 – pacoverflow

+0

沒問題的人!這裏有一些有用的鏈接。首先是使用XML Config的HibernateUtil類的Hibernate.org教程。其次是帶註釋類和註釋會話工廠的優秀YouTube系列。 (爲你少量額外的功課)它會嵌入你的大腦,就像它是我的。 :)[鏈接](http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/)[鏈接](http://www.youtube.com/playlist?list=PL4AFF701184976B25 ) – RedRumming

3

將以下屬性添加到您的hibernate cfg文件中,以便在創建hibernate會話工廠時自動創建表。

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

請參閱編輯我的問題。謝謝。 – pacoverflow

相關問題