我有List<Ref<Entity>>
。我将新条目添加到列表中:
entities.add(Ref.create(new_entry));
modified.add(new_entry);
当我存储包含列表的实体时,我存储列表本身以及modified
列表中的所有实体。这很好。
问题是,我必须使用entities
- 列表,同时我向其添加新条目。这需要多次迭代列表。这里的问题是,列表中的引用指向旧条目(已在数据存储区中)和新条目(在数据存储区中 )。
这会导致Ref.get()
- 方法为列表中所有尚未存储的条目(仍在null
- 列表中的条目)返回modified
。
我在插入时执行此操作:
Ref<T> ref = new DeadRef<>(
Key.create(data),
data
);
this.entities.add(ref);
this.modified.add(data);
这样,我可以将存储和未存储的条目混合在一个列表中,Ref.get()
总是返回一个值。
这有效,但我注意到 这会有问题吗?是否有更好的方法来实现这一目标?entities
- 列表中的引用 DeadRef
,当我将它们存储到数据存储区并再次加载时。< / p>
答案 0 :(得分:1)
这似乎是一个坏主意,虽然我不知道你会遇到什么具体问题。
“正确答案”是首先保存您的实体。
编辑:另请查看ofy().defer().save()
的文档,这可能会阻止您发布大量不必要的保存操作。