我有一个经常使用的项目正在更新中。这个项目可以安装在多个地方,并且未来不确定哪个版本会被安装在哪里以及将来可能更新到哪个版本。目前它们都是相同的。
我的问题源于Hibernate实体类可能有许多更改,必须易于更新到新版本,而不会遇到任何麻烦,并且不会丢失数据库内容。只需替换WAR文件并启动即可自动迁移。
据我所知,除非hibernate.hbm2ddl.auto=create,否则Hibernate不会更改表结构,但是这实际上会清除所有数据吗?
因此,当前Spring上下文完全加载时,它将执行一个bean,通过查找从versionX到versionY(它以前所在的版本保存在数据库中)的所有更改,并手动修改表来将数据库迁移到当前版本。
添加一些列不需要太麻烦,但是当涉及添加完整的新表时,手动编写所有内容看起来很傻...
因此,我的问题是:
是否有一种方法可以向Hibernate某个代码发送实体类和方言,并获取返回用于创建表的有效SQL查询?
甚至更好的是,以一种与方言兼容的方式创建用于向表中添加列的SQL字符串?
希望这不是一个愚蠢的问题,当涉及到Hibernate时我没有漏掉任何明显的东西...