我正在尝试遵循 MongoJack tutorial 但我没有完成第一个任务:将对象插入数据库。
这是我的:
DB db = new MongoClient().getDB("mydb");
JacksonDBCollection<MyDomainObject, String> coll =
JacksonDBCollection.wrap(db.getCollection("coll"),
MyDomainObject.class,
String.class);
MyDomainObject obj = new MyDomainObject(ObjectId.get().toString(), 123456789L);
WriteResult<MyDomainObject, String> result = coll.insert(obj);
System.out.println(result.getSavedId());
MyDomainObject
类如下所示:
class MyDomainObject {
// @org.mongojack.ObjectId doesn't work
public String id;
public long someValue;
public MyDomainObject(String id, long someValue) {
this.id = id;
this.someValue = someValue;
}
}
使用上面的代码,我得到了以下异常:
Exception in thread "main" java.lang.ClassCastException: org.bson.types.ObjectId cannot be cast to java.lang.String
at Test.main(Test.java:26)
而且我一辈子都弄不明白为什么。任何帮助表示赞赏。
最佳答案
显然我所要做的就是重命名
public String id;
到
public String _id;
(用 @JsonProperty("_id")
注释字段似乎也可以解决问题。AFAICT 没有办法说 public String id
应该 替换 _id
字段。如果有人知道如何执行此操作,我对如何操作很感兴趣。
关于java - 使用 MongoDB 和 MongoJack 的简单对象插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23310107/