2016-04-28 116 views
0

使用Morphia 1.1.1。使用Mongo 4.0.5快照,存储来自Twitter4J的用户对象。Morphia的序列化问题

我检索从蒙戈对象“用户”时,出现此错误:

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

对象,在蒙戈在JSON序列的相关部分看起来像:

"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“事物,以及”;“最后?

回答

0

GeoLocation需要一个无参数的构造函数进行反序列化。所以它可能无法直接使用。 [L位表示该类型是一个数组。

另外,什么是Mongo 4.0.5快照? Mongodb没有像这样的名称/版本。最新的数据库版本3.2.6(?我认为我刚刚看到该版本)和Java驱动程序是在3.2.2。

+0

我一定困惑了版本号。我确实给GeoLocation类的源添加了一个无参数构造函数,那么给了什么? – seinecle

+0

你已经更新了你通过maven获得的twitter4j库吗?你需要注意用你更新的位来替换下载的位。 – evanchooly