2017-05-05 63 views
0

我需要使用JPA批註(@Entity)重命名映射到hibernate中的表。 如果我重命名該表,Hibernate將創建一個新表,因此我在flyway上編寫了一個腳本(https://flywaydb.org/),將其刪除並將其重命名爲新的表。更改休眠狀態下mysql的表名

問題是,如果我運行這個腳本兩次,它會丟棄數據庫重命名,失去所有數據。我想寫這樣的東西

DROP TABLE 'NEW_TABLE' IF 'OLD_TABLE' EXISTS; 
RENAME TABLE 'OLD_TABLE' TO 'NEW_TABLE'; 

我不知道如何在MySql中做到這一點,這有可能嗎?

回答

0

如果我正確理解你的問題,然後創建一個名爲newName的新表並執行下面的語句。它所做的是刷新表名並在數據庫中進行外部操作,然後將實體的名稱更改爲newName。只有在這之後繼續運行你的項目。 這應該適合你:

RENAME TABLE `oldName` TO `newName` 
+0

如果newName沒有被刪除,這會給出一個錯誤「Table'newName'already exists」。 Hibernate將在腳本運行前創建表(空) –

+0

我編輯了我的答案,請嘗試我的解決方案,它應該可以工作。 – Harshal