在我的项目中,我创建了一个名为ClickScoreTuple的类,该类扩展了BasicDBObject。 (否则它将出现Serielizable问题)。
然后,我使用以下代码插入ClickScoreTuple
public void insertToMongodb(String q, ClickScoreTuple cs){
BasicDBObject doc = new BasicDBObject();
doc.put("query", q);
doc.put("clicks", cs);
coll.insert(doc);
}
并使用以下代码从MongoDB检索数据。
public ClickScoreTuple retrieveFromMongodb(String q){
BasicDBObject query = new BasicDBObject();
query.put("query", q);
DBCursor cursor = coll.find(query);
**ClickScoreTuple result = (ClickScoreTuple) cursor.next();**
cursor.close();
return result;
}
但是,我遇到这样的问题:
Exception in thread "main" java.lang.ClassCastException: com.mongodb.BasicDBObject cannot be cast to ClickScoreTuple
at MongoDBManager.retrieveFromMongodb(MongoDBManager.java:50)
at UserLogHistoryProcessor.processLogHistory(UserLogHistoryProcessor.java:30)
at UserLogHistoryProcessor.main(UserLogHistoryProcessor.java:108)
有谁知道头解决吗?
最佳答案
您需要设置对象类的类型。...在保存和检索对象之前,请使用setObjectClass的DBCollection方法...。在您的情况下,它应为-
coll.setObjectClass(ClickScoreTuple.class);