Jos*_*der 6 mysql jpa playframework
我通过在他们的网站上按照教程构建一个小博客引擎来学习游戏.
它使用JPA并在其引导程序中调用Fixtures.Deletemodels(),(或类似的东西).
它基本上每次运行时都会核对所有表,我丢失了所有数据.
我已经部署了一个生产系统(没有核武器声明).
现在我需要将大量更新部署到生产系统.许多类已更改,已添加并已删除.在我的本地测试中,没有在每次运行时查看表,我遇到了同步问题.当我尝试写或从表中读取时,播放会抛出错误.我打开了mysql,确定表格在某些情况下只是部分修改和修改不正确.即使我在我的配置中将DDL模式设置为"创建",JPA也似乎无法"弄清楚"如何协调更改并相应地修改我的架构.
所以我必须回到我所有桌子的核心引导声明中.
所以我开始研究Play中的数据库演变,并在play框架网站上阅读有关数据库演变的文章.文章讨论了版本脚本,但它说,"如果您使用JPA,Hibernate可以自动为您处理数据库演变.如果您不使用JPA,演变很有用".
因此,如果JPA应该为我处理这个问题,我该如何在大型Play应用程序中部署大型更新?到目前为止,JPA无法正确更改架构,应用程序将抛出错误.我对丢失我的所有数据都不感兴趣,所以修复dev"Fixtures.deleteModels()"无法真正用于prod.
先谢谢你,乔希
不,JPA不应该为你照顾它.这不是一个神奇的工具.如果您决定将表"client"重命名为"customer",则将"street"列重命名为"line1",并将客户类型列的值从1,2,3切换为"bronze","silver","黄金",JPA没有办法在你的脑海中读到并想象所有的变化都是自动完成的.
要从一个模式迁移到另一个模式,可以使用相同的工具,就像不使用JPA:SQL脚本,或更高级的模式和数据迁移工具,甚至是自定义迁移JDBC代码一样.