Google App Engine - 更改持久类的包

时间:2011-05-08 02:29:01

标签: java google-app-engine gwt google-cloud-datastore

我的GWT应用程序部署在Google App Engine for Java上。我在app引擎数据存储区中保留了一个类的实例。现在我想将该类移动到另一个包中,但它会导致反序列化现有对象时出现问题。

那么,有没有办法将课程转移到新的课程?如果这有助于我实现目标,我不介意更新现有对象。

感谢。

1 个答案:

答案 0 :(得分:2)

这就是我将my.package.Clazz移动到我的。 new .package.Clazz的方法。基本思想是通过第三个“临时”类(本例中为TempClazz)进行迁移:

  • 创建新类my.package.TempClazz(不要简单地重命名Clazz)

  • 创建一个帮助方法,该方法将从数据存储中读取所有现有的Clazz实体,然后将数据复制到新的TempClazz实例中,并将TempClazz实体存储在数据存储区中。

  • 现在部署到GAE并运行帮助方法将Clazz实体复制到TempClazz实体。

  • 如果有效的话。删除Clazz实体。

  • 接下来,基本上重复这个过程,除了这次你实际上将my.package.Clazz重构为新的包我的。 new .package.Clazz。所以在这一点上你将有两个类:my.package.TempClazz和我的。 new .package.Clazz。

  • 剩下要做的就是再次从数据存储中读取TempClazz并将每个复制到Clazz实体中。

非常参与。也许有人知道更简单的方法?