我正在尝试在我们的实体中更改字段名称的情况。我们有类似的东西,例如
class Person {
String name; //The original declaration was "String fullName"
}
根据客观化,你必须使用annonation @AutoLoad("")
。这是正常的,因为Google Datastore不会删除数据实际上它会生成一个新字段,因此这个注释就像旧字段和新字段之间的映射一样。你在读整张桌子时没问题。
当您对查询应用过滤器时出现问题(假设您使用旧名称创建了5个对象,使用新名称创建了5个对象)。查询的结果取决于您是使用旧变量名还是新变量名(仅返回5但不返回10)。它不会同时获取它们并映射它们。对此问题有什么建议吗?我希望我能以清楚的方式解释它。
提前致谢
答案 0 :(得分:1)
最简单的直接解决方案。使用语音“AutoLoad()”获取所有数据。然后再次存储它们。通过这种方式,它们将被保存为新字段。旧的不再存在,或者至少它不再包含任何数据。就像将数据从旧名称迁移到新名称一样。有人有更好的建议吗?
答案 1 :(得分:1)
如果您更改了字段的名称,则需要加载并重新放入所有数据(使用mapreduce API将是一个选项)。这没有什么神奇的方法 - 你存储的数据在磁盘上存在两个不同的名称。
答案 2 :(得分:0)