2016-09-17 119 views
1

remove(0)在列表中只有一個元素map正在使屬性從實體中消失,同時使用對象化保存到谷歌數據存儲。谷歌數據存儲對象化存儲問題與地圖

map」是數據存儲實體中的屬性。

Map<String, List<String>> map; 

以下代碼使地圖屬性從數據存儲器中消失時對應於該鍵"dress"列表具有即使對應於其他的鍵僅一個元件保存後有與任何數目的元素的列表。

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

注意:如果列表中有多個元素,則不會發生該問題。

+0

你的意思是在地圖上有一個空列表和其他元素導致整個列表被丟棄?聽起來像是一個bug。 –

+0

是的。只有當列表變空時移除元素時,整個地圖纔會被丟棄。 –

+0

@Eric其實我剛纔注意到,即使你在實體中只有一個列表屬性,並且當你刪除列表中的最後一個元素,整個列表也會被丟棄。我希望那裏有一個空的列表。 –

回答

1

原來地圖被保存在Objectify 5.1.8版本一直到5.1.12一直存在一個錯誤。我們升級到5.1.13,現在這個工作。

0

了Java SDK的默認行爲是(從the docs)如下:

  • 空屬性被寫成空到數據存儲
  • 空的集合寫成空到數據存儲
  • null從數據存儲區讀取爲空
  • 將空集合讀取爲空。

你可以改變這樣的空列表使用

System.setProperty(DatastoreServiceConfig.DATASTORE_EMPTY_LIST_SUPPORT, Boolean.TRUE.toString()) 

務必開啓該功能之前閱讀上面列出的文檔部分保存;它列出了幾個需要注意的注意事項。

+0

正如在問題的評論中提到的,我面臨的問題是地圖消失。 –