Java Hibernate MySQL查找未映射的表和列

Java Hibernate MySQL查找未映射的表和列,java,mysql,hibernate,Java,Mysql,Hibernate,我使用Hibernate的自动生成DDL特性来创建表和列 但是,我最终删除了实体中的许多列,但这些列仍保留在数据库中 是否有一个脚本可以识别那些未映射的列和表,以便我可以手动删除它们 现在,我是手动操作的,但随着数据库的增长,它会出现问题 恐怕没有自动的方法可以做到这一点 或者,您可以在构建和加载项目之前删除整个表,并让hibernate使用您定义的列名重新创建它。建议: 我们应该只在开发环境中使用hibernate.hbm2ddl.auto属性,而不是在生产环境中 如果hibernate.hb

我使用Hibernate的自动生成DDL特性来创建表和列

但是,我最终删除了实体中的许多列,但这些列仍保留在数据库中

是否有一个脚本可以识别那些未映射的列和表,以便我可以手动删除它们


现在,我是手动操作的,但随着数据库的增长,它会出现问题

恐怕没有自动的方法可以做到这一点


或者,您可以在构建和加载项目之前删除整个表,并让hibernate使用您定义的列名重新创建它。

建议:

  • 我们应该只在开发环境中使用hibernate.hbm2ddl.auto属性,而不是在生产环境中

  • 如果hibernate.hbm2ddl.auto=create drop,则hibernate将在每次部署时删除并创建一个新数据库, 这意味着我们可以跟踪数据库状态及其一致性

  • 如果hibernate.hbm2ddl.auto=update,则hibernate将仅使用对模型/实体类所做的更改来更新数据库, 但生产环境/数据库不应信任它

  • 对于生产环境,应将hibernate.hbm2ddl.auto设置为默认值,以便在生产中不会从hibernate反映任何数据库更改


  • 我同意prod不应该自动生成ddl。但现实是,我不得不清理数百个未映射的列,我很惊讶没有人为此编写脚本。因为我还有大量未使用的外键。这不是清理生产表的选项。