我的GWT应用程序部署在Google App Engine for Java上。我在app引擎数据存储区中保留了一个类的实例。现在我想将该类移动到另一个包中,但它会导致反序列化现有对象时出现问题。
那么,有没有办法将课程转移到新的课程?如果这有助于我实现目标,我不介意更新现有对象。
感谢。
答案 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实体中。
非常参与。也许有人知道更简单的方法?