java - 如何将从 MongoDB 检索到的 DBObject 转换为自定义类?

标签 java mongodb classcastexception

在我的项目中,我创建了一个名为 ClickScoreTuple 的类,它扩展了 BasicDBObject。 (否则会出现 Serielized 问题)。

然后,我使用下面的代码插入 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);

关于java - 如何将从 MongoDB 检索到的 DBObject 转换为自定义类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13576085/

相关文章:

Java:检测返回对象的类型

java - 输入完成后如何终止扫描仪?

java StringTokenizer 意外结果

java - 如何提取Java中所有类型的名词?

mongodb - mongo shell - 访问数据库集合

java - 为什么我的 AsyncTask 中会出现这个 ClassCastException?

java.util.Timestamp.after() 比较毫秒时出错?

node.js - 在 Mongoose 中添加多个验证

MongoDB 错误代码 16755 - 无法提取地理键和重复顶点

java - Applet : visually bugs out only in browser, 并从 Swing 抛出异常