2011-08-23 15 views
0

我對此很新。我試圖用hsqldb和hibernate配置net-beans Maven項目。我已經建立了數據庫,並且能夠將一些數據保存到數據庫中。我正在使用文件模式。這是我的連接URLhsqldb數據庫特定表丟棄的問題,使用hsqldb/hibernate和我的maven項目

"jdbc:hsqldb:file:C:/data/findb" 

然而,我遇到的問題是我的數據庫表將在每次執行刪除並重新創建全新的。我不希望發生這種情況。我只想創建表格一次,並能夠在之後進行更新。

這裏是我的配置文件的一個片段

boolean found = false; 
     String URL = "jdbc:hsqldb:file:C:/data/findb"; 

     Configuration cfg = new Configuration(); 

     if (!found) { 
      cfg.setProperty("hibernate.hbm2ddl.auto", "create"); 
     } else { 
      cfg.setProperty("hibernate.hbm2ddl.auto", "update"); 
     } 

     cfg.setProperty("hibernate.connection.driver_class", 
       "org.hsqldb.jdbcDriver"); 
     cfg.setProperty("hibernate.connection.url", URL); 
     cfg.setProperty("hibernate.connection.username", "sa"); 
     cfg.setProperty("hibernate.connection.password", "1234"); 
     cfg.setProperty("hibernate.connection.pool_size", "20"); 
     // cfg.setProperty("hibernate.connection.hsqldb.default_table_type", 
      // "cached"); 

     sessionFactory = cfg.configure().buildSessionFactory(); 

而且以我的理解是位應該阻止表的下降在每一個創作,因爲我使用if-else語句來創建,如果不存在如果有的話更新。

這是mydb.log如何開始

/*C4*/SET SCHEMA PUBLIC 
drop table FinPlan if exists 
drop table PersonalAssets if exists 
drop table TB_UNIQUEID if exists 

我在想什麼? 任何幫助將不勝感激。 預先感謝您。

回答

2

hibernate.hbm2ddl.auto = create會在每次執行時自動重新創建表。由於你設置發現爲false,hibernate.hbm2ddl.auto將永遠是「創建」

+1

正確 - 看到這個(問題和)答案的更多細節:http://stackoverflow.com/questions/438146/hibernate-question -hbm2ddl-auto-possible-values-and-what-they-do/1689769#1689769 – Ralph

+0

你是個天才的人。非常感謝你,現在它運行良好,我設置發現的值爲真,所以它不會丟掉我的表。 – Precious

+0

一個簡單的問題....現在它變成了這樣的東西....從TB_UNIQUEID刪除其中ID = 1 INSERT INTO TB_UNIQUEID VALUES(1,160,1314080801652,'global_tb') COMMIT ...這是否意味着它會在添加新數據之前刪除表中的所有數據? – Precious