2014-06-05 71 views
2

我有JPA表註釋,我想改變一些表名以遵循特定的命名約定。問題是這些表已經在生產。我不喜歡手動創建新表和插入數據的想法,因爲我不知道如何處理id和關聯。有沒有辦法使用Hibernate遷移JPA表名?

解決此問題的最佳方法是什麼?

編輯:我正在使用hibernate.hbm2ddl.auto = update。

+1

重命名錶然後編輯或重新生成實體類 –

+0

使用帶有「alter table」語句的SQL腳本來重命名錶。 – Jens

+0

我使用hibernate.hbm2ddl.auto = update來自動創建表。我認爲SessionFactory將在我執行alter table查詢之前創建一個新表。 – anssias

回答

2
  1. 您需要遷移生產腳本執行:

    RENAME TABLE ....

  2. 修改實體表映射,以符合新的表名

  3. 你做1)和2)的生產更新

+3

步驟(0) - 備份數據庫 –

+0

我想在應用程序的開始進行遷移,而不是手動進行遷移。問題是我有自動模式更新(hibernate.hbm2ddl.auto =更新),這將創建一個新表,然後我重新命名錶。也許我應該擺脫它,但那是另一回事。 – anssias

+1

你這樣做都是錯的。您應該從未依賴hbm2ddl = auto生產系統。您可以從HBM創建腳本作爲初始腳本,稍後添加增量更新腳本。使用[Flyway](http://flywaydb.org/)自動運行這些增量腳本。 –

相關問題