ArrayList‹HashMap‹String, String› работи с облачни крайни точки?

Използвам java, за да програмирам API с Google Cloud Endpoints и Datastore. Току-що добавих ArrayList<HashMap<String, String>> като поле на един от моите обекти, но изглежда не се разпознава от крайните точки в облака. Използвам рамката Objectify.

Първоначално забелязах, че се появява някакво изключение NullPointerException, а след това видях, че полето дори не се споменава от Datastore Viewer.

Този тип не се поддържа ли от хранилището за данни?


person Gannicus    schedule 23.04.2015    source източник
comment
...Защо ви трябва списък с карти? Това няма нищо общо с въпроса ви, но съм любопитен.   -  person Fund Monica's Lawsuit    schedule 23.04.2015
comment
В моето приложение има малка игра, така че трябва да съхраня списък с карта, като всяка карта представлява играч (с три двойки ключ/стойност: име, идентификатор и резултат)   -  person Gannicus    schedule 23.04.2015
comment
Изглежда, че това е работа, по-подходяща за специален Player обект, а не за карта. Бих предположил, че Google има поддръжка за персонализирани обекти, макар че не съм сигурен в това. Ако не, игнорирайте ме.   -  person Fund Monica's Lawsuit    schedule 23.04.2015
comment
Моля, включете проследяването на стека на изключението, което виждате.   -  person saiyr    schedule 23.04.2015


Отговори (2)


Полето трябва да се поддържа както от хранилището за данни, така и от маршалера на крайните точки в облака. Само имайте предвид, че празните колекции се съхраняват като нулеви стойности в хранилището за данни.

Ще трябва да стартирате колекцията при извличане, в случай че обектът е бил съхранен с празна колекция.

Като казах, че съм съгласен с препоръката на @QPaysTaxes, в дългосрочен план ще си спестите много болка, ако опаковате това в POJO. Което BTW може да бъде посочено чрез ID, вместо да се налага да дублира данни навсякъде.

person jirungaray    schedule 23.04.2015
comment
Да, поддържа се, изглежда, че не инициализирах полето правилно. И да, решението на POJO, предложено от @QPaysTaxes, е по-добра идея от Map, така че го внедрих. Благодаря и на двама ви - person Gannicus; 23.04.2015

С Objectify можете да съхранявате всеки POJO, можете ли да проверите дали полето се появява, като използвате конзолата на програмиста?

Между другото, крайната точка в облака може да върне всеки обект (но не и примитивен, като int или boolean). Така че няма да е проблем по този въпрос.

person Javier Ruiz    schedule 23.04.2015
comment
Проверих както новата конзола за разработчици, така и старата и всички полета се появяват освен това. Въпреки че е облекчение, че казахте, че е възможно, все още се чудя какво се случва. - person Gannicus; 23.04.2015