2012-05-04 59 views
1

我剛換我的persistence.xml從下降和創建桌下降太容易

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

<property name="toplink.ddl-generation" value="create-tables"/> 

現在數據的應用程序運行之間依然存在,正如我所期望的。但是,這並不是我期望這種設置起作用的方式。不應該只在表丟失或不匹配時進行刪除和創建?

我只是想知道這是標準的,或者也許表明我沒有正確使用JPA,當設置了drop-and-create時,表格變得太簡單了。

+1

刪除創建對集成測試非常有用,這基本上是它的目的。 –

+0

啊,這就解釋了目的!現在更有意義。 – Thufir

回答

1

這是打算的行爲。

create-tables只會嘗試創建表,如果表已經存在,那麼它不會被刪除或替換,現有的表將被使用。這是而不是檢查表是否與您嘗試創建的表匹配 - 只要存在具有給定名稱的表。如果您的方案發生變化,您必須手動刪除表格(或通過其他機制),以便下次新創建表格。

drop-and-create-tables將首先刪除現有表,然後創建新表。請注意,這將丟失表中的所有數據。

+0

好的,感謝您的快速回復,並確認這是預期的行爲。我不認爲這是**正確的行爲,但這只是我的看法。無論如何,很高興知道,再次感謝。 – Thufir

1

是的,我認爲你的觀察是正確的。至少我有同樣的問題。如果您的描述行爲有另一種選擇,那將是非常好的。

+0

Marko Topolnik在對集成測試目的進行評論時解釋道。 – Thufir