remove(0)
中只有一个元素的列表上的 map
会使map
属性从实体中消失,同时使用objectify保存到Google数据存储区。
" map
"是数据存储区实体中的属性。
Map<String, List<String>> map;
在以下代码之后保存导致map属性从数据存储区中消失时,当对应于键"dress"
的列表只有一个元素时,即使对应于其他键,也会有包含任意数量元素的列表。
map.get("dress").remove(0)
注意:如果列表中有多个元素,则不会发生此问题。
答案 0 :(得分:1)
原来,在Objectify版本5.1.8中将地图保存到5.1.12的方式存在一个错误。我们升级到5.1.13,现在可以使用了。
答案 1 :(得分:0)
Java SDK的默认行为如下(来自the docs):
- 将空属性写为空数据
- 将空集合写为空数据
- null从数据存储区读取为null
- 空集合读为空。
您可以更改它,以便使用
保留空列表System.setProperty(DatastoreServiceConfig.DATASTORE_EMPTY_LIST_SUPPORT, Boolean.TRUE.toString())
在开启此功能之前,请务必阅读上面列出的文档部分;它列出了几个值得注意的警告。