2016-04-28 10 views
0

Verwenden von Morphia 1.1.1. mit Mongo 4.0.5 Snapshot, Speichern von Benutzerobjekten von Twitter4J.Serialisierungsproblem mit Morphia

ich diesen Fehler, wenn ein Objekt "Benutzer" von Mongo Abrufen:

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

Der relevante Teil des Objekts, in Json in Mongo serialisiert wie folgt aussieht:

"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 
    }, 

I geprüft und hat in der Quelle der GeoLocation-Klasse tatsächlich einen öffentlichen no-arg-Konstruktor hinzugefügt. Und was ist das "[L" Ding vor dem Paketnamen, und das ";" Am Ende?

Antwort

0

GeoLocation muss ein No-Arg-Konstruktor deserialisiert werden. Es wird also wahrscheinlich nicht funktionieren, das direkt zu verwenden. Das Bit [L bedeutet, dass der Typ ein Array ist.

Auch, was ist Mongo 4.0.5 Snapshot? Es gibt nichts von Mongodb mit einem solchen Namen/einer solchen Version. Die neueste Datenbankversion 3.2.6 (? Ich glaube, ich habe gerade diese Version gesehen) und der Java-Treiber ist bei 3.2.2.

+0

Ich muss die Versionsnummer verwechselt haben. Ich habe der Quelle der GeoLocation-Klasse einen arg-Konstruktor hinzugefügt, also was gibt es? – seinecle

+0

Sie haben die Version von twitter4j aktualisiert, die Sie über maven erhalten haben? Sie müssen darauf achten, die heruntergeladenen Bits durch Ihre aktualisierten Bits zu ersetzen. – evanchooly