lundi 13 avril 2015

can't serialize class org.springframework.data.geo.Point

I'm trying to put together an aggregation query for some GPS data using spring-data-mongodb 1.6.2. Here's what it looks like:



Aggregation agg = newAggregation(
match(new Criteria()
.andOperator(
Criteria.where("eventTime").gte(filterDate),
Criteria.where("location").nearSphere(p).maxDistance(distance)
)
),
sort(Direction.DESC, "vanId", "eventTime"),
group("vanId").first(Aggregation.ROOT).as("first")
);

return mongoTemplate.aggregate(agg,GpsDataEntity.MONGO_COLLECTION, GroupedEntity2.class);`


The problem I'm seeing has to due with the match() portion of the query. The exception is really long so I've included just the stack up to the point where mongoTemplate.aggregate() is called in the code snippet above:



Caused by: java.lang.IllegalArgumentException: can't serialize class org.springframework.data.geo.Point at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:284) at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:185) at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:240) at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:185) at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:240) at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:199) at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:240) at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:185) at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:240) at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:185) at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:240) at org.bson.BasicBSONEncoder.putIterable(BasicBSONEncoder.java:309) at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:248) at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:185) at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:131) at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:33) at com.mongodb.OutMessage.putObject(OutMessage.java:289) at com.mongodb.OutMessage.writeQuery(OutMessage.java:211) at com.mongodb.OutMessage.query(OutMessage.java:86) at com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:81) at com.mongodb.DB.command(DB.java:317) at com.mongodb.DB.command(DB.java:296) at com.mongodb.DB.command(DB.java:371) at com.mongodb.DB.command(DB.java:243) at org.springframework.data.mongodb.core.MongoTemplate$1.doInDB(MongoTemplate.java:326) at org.springframework.data.mongodb.core.MongoTemplate$1.doInDB(MongoTemplate.java:324) at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:394) at org.springframework.data.mongodb.core.MongoTemplate.executeCommand(MongoTemplate.java:324) at org.springframework.data.mongodb.core.MongoTemplate.aggregate(MongoTemplate.java:1418) at org.springframework.data.mongodb.core.MongoTemplate.aggregate(MongoTemplate.java:1353)



The above query works fine if I remove the nearSphere criteria. I've verified that the Point and distance being passed are valid.


If anyone can give any pointers on what I'm doing wrong I'd appreciate it.


Aucun commentaire:

Enregistrer un commentaire