1

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

有谁知道锄头来解决它?

4

2 回答 2

1

您需要设置对象类类型....在保存和检索对象之前使用DBCollection的setObjectClass方法....在您的情况下,它应该是-

coll.setObjectClass(ClickScoreTuple.class);

于 2015-05-22T11:33:34.320 回答
0

父母可以持有对孩子的引用,但反之则不行。您必须DBObject手动映射到,ClickScoreTuple因为该DBCursor.next()方法未编码以返回您的孩子。

于 2012-11-27T05:03:35.233 回答