Google数据存储客观化可以解决地图问题

时间:2016-09-17 06:49:00

标签: google-app-engine google-cloud-datastore objectify

remove(0)中只有一个元素的列表上的

map会使map属性从实体中消失,同时使用objectify保存到Google数据存储区。

" map"是数据存储区实体中的属性。

Map<String, List<String>> map;

在以下代码之后保存导致map属性从数据存储区中消失时,当对应于键"dress"的列表只有一个元素时,即使对应于其他键,也会有包含任意数量元素的列表。

map.get("dress").remove(0)

注意:如果列表中有多个元素,则不会发生此问题。

2 个答案:

答案 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())

在开启此功能之前,请务必阅读上面列出的文档部分;它列出了几个值得注意的警告。