2012-02-05 69 views
1

有誰知道GAE Datastore API是否支持用戶創建的類和/或集合(例如ArrayList等)?Google App Engine支持的數據存儲類型

我有以下代碼行:

entity.setProperty("offlineUsers",user._network._offlineUsers); 

當屬性類型爲I創建的「用戶」類的ArrayList。這行代碼發生以下異常:

java.lang.IllegalArgumentException: offlineUsers: com.example.computeroom.User is not a supported property type. 

所以讀取數據存儲引導http://code.google.com/intl/iw/appengine/docs/java/datastore/entities.html引起我的懷疑,你可以創建不存儲類,或集合/數組 - 我只能看到基本類型(int,布爾支持等等),並沒有提到用戶定義的對象或數組\集合。

1-可以肯定 - 數據存儲不支持用戶類是否爲真?

2-集合/數組怎麼樣 - 真的可以不支持數組嗎?
我應該如何存儲大量的用戶/數據列表?

回答

0

你絕對可以存儲清單 - 我認爲任何Collection。您可以在存儲後在列表中搜索,但有一些意外的限制和行爲。

當然,您可以存儲任何用戶定義的類,您可以將其序列化爲字節,但是您將無法將它們編入索引以搜索其成員或任何內容。

+0

謝謝萊利,這將會得到支持,這絕對有意義。我被/拋出的異常混淆了(會檢查出來,看看是什麼原因導致它),並在指南中缺少提及對象和集合... – 2012-02-05 17:52:53

+0

是的...它提到它在導遊中有些地方,但我無法很快找到它。奇怪:o – 2012-02-05 18:32:21

+1

您可以存儲數據存儲的本機類型的集合。你看到的錯誤是由自定義的「用戶」類型造成的,而不是由ArrayList造成的。您必須將其明確地序列化爲Blob值。 – 2012-02-05 21:37:02

1

「」實體具有命名屬性,其值可以是基本類型或基本類型的集合。當然,如果序列化爲字節數組,可能會存儲更豐富的對象,但這可能會阻止這些屬性的有效查詢。 「

看來你只能在數據存儲API基本類型的商店名單。

+0

你在這個答案和我發佈的答案之間有什麼區別?您還可以存儲序列化對象的列表。 – 2012-02-14 13:54:38

+0

你是對的在你的回答這是我的問題是不好的 – 2012-02-14 14:19:39

0

我不知道是否回答您的問題.. 一些地方在閱讀查詢和索引頁我看到這個

dataStore.put(Arrays.asList(person, weddingPhoto, babyPhoto, dancePhoto, campingPhoto)); 
相關問題