2017-05-05 53 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