Java 如何将数据库对象从MongoDB检索到自定义类?

Java 如何将数据库对象从MongoDB检索到自定义类?,java,mongodb,classcastexception,Java,Mongodb,Classcastexception,在我的项目中,我创建了一个名为ClickScoreTuple的类,它扩展了BasicDBObject。(否则将出现可序列化问题) 然后,我使用下面的代码插入ClickScoreTuple public void insertToMongodb(String q, ClickScoreTuple cs){ BasicDBObject doc = new BasicDBObject(); doc.put("query", q); doc.put("clicks", cs);

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

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

有人知道怎么解决这个问题吗?

父母可以引用孩子,但反之亦然。您必须将
DBObject
手动映射到
ClickScoreTuple
作为
DBCursor。next()
方法未编码以返回您的子对象。

父对象可以保留对子对象的引用,反之亦然。您必须将
DBObject
手动映射到
ClickScoreTuple
作为
DBCursor。next()
方法未编码以返回您的子对象。

您需要设置对象类类型。。。。在保存和检索对象之前使用的方法。。。。对你来说,应该是这样--


coll.setObjectClass(单击ScoreTuple.class)

您需要设置对象类类型。。。。在保存和检索对象之前使用的方法。。。。对你来说,应该是这样--

coll.setObjectClass(单击ScoreTuple.class)