2012-04-26 61 views
0

我在JOnAS(Java環境)中使用Postgresql數據庫和eclipselink2.3提供程序。我的配置是:如何在eclipselink中存在Postgresql數據庫時忽略創建表?

的persistence.xml:

... 
<property name="eclipselink.ddl-generation" value="create-tables"/> 
<property name="eclipselink.ddl-generation.output-mode" value="database"/> 
<property name="eclipselink.target-database" value="POSTGRESQL"/> 
... 

PostgreSQL的版本是

Version : 8.4.11-0squeeze1 

JDBC驅動程序版本

postgresql-8.4-703.jdbc3.jar 

當數據庫是空的,沒有問題。

我的問題是當eclipselink.ddl-generation被設置爲創建 - 表和表已經存在於數據庫中時,出現錯誤並且進程不會繼續執行下一條語句,如here所解釋的。

有沒有人看到解決方案?

回答

2

我沒有看到任何property,這將防止throwin錯誤在你的情況。所以我會建議以下。您應該爲3種不同的環境提供3個persistence.xml文件:開發,測試和生產。

在發展environoment你想用乾淨的數據庫工作,所以

<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> 

與測試environoment相同,但在這種情況下,我會使用DbUnit來填充數據庫的測試數據。

在生產中,你不想惹數據庫結構,

<property name="eclipselink.ddl-generation" value="none"/> 

是正確的選擇。

如果你使用ant或maven這樣的配置很容易完成(你可以在網上找到例子,因爲這是非常標準的方法)。

我想你不會喜歡這個答案;),因爲這看起來像很多額外的工作,但是從長遠來看,乾淨的配置和分離將會得到回報。

+0

事實上,數據庫是在上游創建和配置的。所以,我把這個屬性設置爲none。 – Mohammed 2012-04-26 14:29:23

0

如果表已存在,則「create-tables」選項不會失敗。它會記錄錯誤,但繼續。 如果您不想看到該錯誤,則可以關閉日誌記錄。

你會得到什麼錯誤?

相關問題