我有JPA表註釋,我想改變一些表名以遵循特定的命名約定。問題是這些表已經在生產。我不喜歡手動創建新表和插入數據的想法,因爲我不知道如何處理id和關聯。有沒有辦法使用Hibernate遷移JPA表名?
解決此問題的最佳方法是什麼?
編輯:我正在使用hibernate.hbm2ddl.auto = update。
我有JPA表註釋,我想改變一些表名以遵循特定的命名約定。問題是這些表已經在生產。我不喜歡手動創建新表和插入數據的想法,因爲我不知道如何處理id和關聯。有沒有辦法使用Hibernate遷移JPA表名?
解決此問題的最佳方法是什麼?
編輯:我正在使用hibernate.hbm2ddl.auto = update。
您需要遷移生產腳本執行:
RENAME TABLE ....
修改實體表映射,以符合新的表名
你做1)和2)的生產更新
步驟(0) - 備份數據庫 –
我想在應用程序的開始進行遷移,而不是手動進行遷移。問題是我有自動模式更新(hibernate.hbm2ddl.auto =更新),這將創建一個新表,然後我重新命名錶。也許我應該擺脫它,但那是另一回事。 – anssias
你這樣做都是錯的。您應該從未依賴hbm2ddl = auto生產系統。您可以從HBM創建腳本作爲初始腳本,稍後添加增量更新腳本。使用[Flyway](http://flywaydb.org/)自動運行這些增量腳本。 –
重命名錶然後編輯或重新生成實體類 –
使用帶有「alter table」語句的SQL腳本來重命名錶。 – Jens
我使用hibernate.hbm2ddl.auto = update來自動創建表。我認爲SessionFactory將在我執行alter table查詢之前創建一個新表。 – anssias