[英]How cast DBObject retrieved from MongoDB to customized class?
In my project, I make a class called ClickScoreTuple which extends BasicDBObject. 在我的项目中,我创建了一个名为ClickScoreTuple的类,该类扩展了BasicDBObject。 (Otherwise it will have Serielizable problem). (否则它将出现Serielizable问题)。
Then, I use the below code to insert a ClickScoreTuple 然后,我使用以下代码插入ClickScoreTuple
public void insertToMongodb(String q, ClickScoreTuple cs){
BasicDBObject doc = new BasicDBObject();
doc.put("query", q);
doc.put("clicks", cs);
coll.insert(doc);
}
And use the below code to retrieve data from MongoDB. 并使用以下代码从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;
}
However, I get such problem: 但是,我遇到这样的问题:
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)
Does anyone know hoe to solve it? 有谁知道头解决吗?
You need to set the Object Class type.... Use setObjectClass method of DBCollection before saving and retrieving the object .... In your case, it should be -- 您需要设置对象类类型。...在保存和检索对象之前,请使用DBCollection的 setObjectClass方法。
coll.setObjectClass(ClickScoreTuple.class); coll.setObjectClass(ClickScoreTuple.class);
Parent can hold a reference to child but not vice versa. 父母可以提及孩子,反之亦然。 You have to map DBObject
manually to ClickScoreTuple
as the DBCursor.next()
method was not coded to return your child. 你必须映射DBObject
手动ClickScoreTuple
作为DBCursor.next()
方法不编码来回报您的孩子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.