我使用morphia和mongodb 我需要从mongo doc获得一个pojo 与数据库的连接运作良好 我有一个包含数据库字段,getter和setter的类。
当我执行以下代码时:
public class TestCon extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
Morphia morphia=new Morphia();
MongoClient mongoClient = new MongoClient( "192.168.1.254" , 27017 );
DB db = mongoClient.getDB( "syslog" );
Set<String> tables = db.getCollectionNames();
for(String coll : tables){
PrintWriter writer = res.getWriter();
writer.println(coll);
}
BasicDBObject idObj=new BasicDBObject ("_id", new ObjectId("531f28101ad8f9ef25000001"));
BasicDBObject obj=(BasicDBObject) db.getCollection("tables").findOne(idObj);
MappingMorphia mapping=morphia.fromDBObject(MappingMorphia.class,obj);
}
}
执行后,代码会生成此异常:
com.google.code.morphia.mapping.MappingException:尝试映射到未映射的类:MappingMorphia
com.google.code.morphia.Morphia.fromDBObject(Morphia.java:123)
com.google.code.morphia.Morphia.fromDBObject(Morphia.java:118)
TestCon.doGet(TestCon.java:37)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:33)
答案 0 :(得分:0)
为什么使用fromDBObject()而不是查询?
datastore.get(MappingMorphia.class, new ObjectId("531f28101ad8f9ef25000001"))
如果您没有显式调用morphia.map(MappingMorphia.class),那么您的代码将无法运行,因为morphia不知道该类是什么。如果你调用get(),morphia会在运行查询之前识别出它不知道该类并且懒惰映射它。
但严重的是,你永远不应该手动调用fromDBObject()。如果你这样做,你可能会有一个非常破碎的设计。