【发布时间】:2016-09-17 06:49:00
【问题描述】:
在map 中只有一个元素的列表中的remove(0) 正在使map 属性从实体中消失,同时使用objectify 保存到google 数据存储区。
“map”是数据存储实体中的一个属性。
Map<String, List<String>> map;
当与键 "dress" 对应的列表只有一个元素时,在以下代码之后保存会导致 map 属性从数据存储中消失,即使对应于其他键的列表具有任意数量的元素。
map.get("dress").remove(0)
注意:当列表中有多个元素时,不会发生此问题。
【问题讨论】:
-
您的意思是在地图中包含其他元素的空列表会导致整个列表被丢弃?对我来说听起来像是一个错误。
-
是的。只有在列表变为空时删除元素时,才会丢弃整个地图。
-
@Eric 实际上我刚刚注意到,即使您在实体中只有一个列表属性,并且当您删除列表中的最后一个元素时,整个列表也会被丢弃。我希望会有一个空列表。
-
哦,我的评论有误。空列表是否会导致整个
map被丢弃,还是仅导致 entry 被丢弃?后者不会让我感到惊讶,尽管我在文档中找不到任何关于它的内容。 -
如果从列表中删除一个元素会使列表为空,则该列表所属的映射将被丢弃。另外我注意到的是,如果列表是实体中的直接条目而不是映射的一部分,那么当您删除列表中的最后一个元素时,列表条目也会被丢弃。我希望在这种情况下会有一个空列表。我猜上面两个是相关的?
标签: google-app-engine google-cloud-datastore objectify