Проблема сериализации с Morphia

Использование Морфии 1.1.1. с моментальным снимком Mongo 4.0.5, хранящим объекты пользователя из Twitter4J.

Я получаю эту ошибку при получении объекта «Пользователь» из Mongo:

org.mongodb.morphia.mapping.MappingException: No usable constructor for [Ltwitter4j.GeoLocation;

Соответствующая часть объекта, сериализованная в Json в Mongo, выглядит так:

    "favoriteCount" : 4,
    "place" : {
        "name" : "Kewaunee",
        "countryCode" : "US",
        "id" : "0114d7a909aa6731",
        "country" : "United States",
        "placeType" : "city",
        "url" : "https://api.twitter.com/1.1/geo/id/0114d7a909aa6731.json",
        "fullName" : "Kewaunee, WI",
        "boundingBoxType" : "Polygon",
        "boundingBoxCoordinates" : [ 
            {
                "className" : "[Ltwitter4j.GeoLocation;"
            }
        ],
        "accessLevel" : 0
    },

Я проверил и фактически добавил публичный конструктор без аргументов в исходный код класса GeoLocation. И что это за "[L" перед именем пакета и ";" в конце?


person seinecle    schedule 28.04.2016    source источник


Ответы (1)


GeoLocation для десериализации требуется конструктор без аргументов. Так что, вероятно, не получится использовать это напрямую. Бит [L означает, что тип является массивом.

Кроме того, что такое моментальный снимок Mongo 4.0.5? В Mongodb нет ничего с таким именем/версией. Последняя версия базы данных 3.2.6 (? кажется, я только что видел этот выпуск) и драйвер Java версии 3.2.2.

person evanchooly    schedule 29.04.2016
comment
Должно быть, я перепутал номер версии. Я добавил конструктор без аргументов в исходный код класса GeoLocation, так что же дает? - person seinecle; 30.04.2016
comment
Вы обновили библиотеку twitter4j, полученную через maven? Вам нужно позаботиться о том, чтобы заменить загруженные биты обновленными битами. - person evanchooly; 01.05.2016