从序列化列表字段到列表字段对象化

From serialized list field to list field objectify

我在我的 GAE java 服务器上使用 objectify,我想用一个字段更新一个 class 实体,该字段是一个带有 @Serialize 注释的列表,我现在想转换它到一个简单的列表。

我该怎么做?

基本上,您创建第二个字段来保存您的首选格式,并使用 @OnLoad 方法迁移数据。然后 load/save 所有实体。

但是,有一个问题。如果您的系统很忙,您可以放心,对于一定数量的请求,旧版本和新版本将共存。所以你必须对过渡有点小心。最安全的方法是:

  1. 部署创建(并保留)新字段的代码,优先使用它,但不要向它写入数据。
  2. 部署代码以迁移 @OnLoad 中的数据,使用 @IgnoreSave(IfNull.class)(或您喜欢的方式)删除旧数据
  3. 通过加载+保存重新处理所有实体
  4. 从您的代码中删除旧字段