【问题标题】:Rename field using Objectify and Google App Engine使用 Objectify 和 Google App Engine 重命名字段
【发布时间】:2011-03-22 16:01:16
【问题描述】:

我正在尝试更改实体中的字段名称的情况。例如我们有这样的东西

class Person {
   String name; //The original declaration was "String fullName"    
}

根据客观化你必须使用annonation @AutoLoad("")。这没关系,因为 Google Datastore 实际上并没有删除数据,但它创建了一个新字段,所以这个注释就像旧字段和新字段之间的映射。读整张表没问题。

当您对查询应用过滤器时会出现问题(假设您创建了 5 个具有旧名称的对象和 5 个具有新名称的对象)。查询的结果取决于您使用的是旧变量名还是新变量名(仅返回 5,但从不返回 10)。它不会同时获取它们并映射它们。对这个问题有什么建议吗?我希望我清楚地解释了它。

提前致谢

【问题讨论】:

    标签: google-app-engine objectify


    【解决方案1】:

    最简单直接的解决方案。使用注释“AutoLoad()”获取所有数据。然后再次存储它们。这样,它们将被保存为新字段。旧的不再存在,或者至少它不再包含任何数据。这就像将数据从旧名称迁移到新名称。谁有更好的建议?

    【讨论】:

      【解决方案2】:

      如果您更改了字段的名称,则需要加载并重新放置所有数据(此处使用 mapreduce API 是一种选择)。没有什么神奇的方法可以解决这个问题 - 您存储的数据在磁盘上有两个不同的名称。

      【讨论】:

      • 是的,我想这是最方便的解决方案:)
      【解决方案3】:

      【讨论】:

      猜你喜欢
      • 2014-08-09
      • 2011-06-19
      • 2012-05-05
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2020-12-31
      相关资源
      最近更新 更多