在我的项目中,我创建了一个名为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)


有谁知道头解决吗?

最佳答案

您需要设置对象类的类型。...在保存和检索对象之前,请使用setObjectClassDBCollection方法...。在您的情况下,它应为-

coll.setObjectClass(ClickScoreTuple.class);

10-08 20:06