Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用hibernate更改mysql中的表名_Java_Mysql_Hibernate_Jpa - Fatal编程技术网

Java 使用hibernate更改mysql中的表名

Java 使用hibernate更改mysql中的表名,java,mysql,hibernate,jpa,Java,Mysql,Hibernate,Jpa,我需要使用JPA注释(@Entity)重命名在hibernate中映射的表。 如果我重命名该表,Hibernate将创建一个新表,因此我在flyway()上编写了一个脚本,删除它并将旧表重命名为新表 问题是,如果我运行此脚本两次,它将删除重命名的数据库,从而丢失所有数据。我想写这样的东西 DROP TABLE 'NEW_TABLE' IF 'OLD_TABLE' EXISTS; RENAME TABLE 'OLD_TABLE' TO 'NEW_TABLE'; 我不知道如何在MySql中实现这一

我需要使用JPA注释(@Entity)重命名在hibernate中映射的表。 如果我重命名该表,Hibernate将创建一个新表,因此我在flyway()上编写了一个脚本,删除它并将旧表重命名为新表

问题是,如果我运行此脚本两次,它将删除重命名的数据库,从而丢失所有数据。我想写这样的东西

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

我不知道如何在MySql中实现这一点,有可能吗?

如果我正确理解了您的问题,那么创建一个名为newName的新表,并执行以下语句。它所做的是在数据库外部滑动表名,然后将实体名称更改为newName。只有在这之后,才能继续运行您的项目。 这应该适合您:

RENAME TABLE `oldName` TO `newName`

如果未删除新名称,则会出现错误“表'newName'已存在”。Hibernate必须在脚本runsI编辑我的答案之前创建表(空),请尝试我的解决方案,它应该可以工作。