使用MongoDB和MongoJack进行简单对象插入

时间:2014-04-26 11:19:32

标签: java mongodb jackson mongojack

我试图关注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)

我不能为我的生活找出原因。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

显然,我所要做的就是重命名

public String id;

public String _id;

(用@JsonProperty("_id")注释字段似乎也可以解决这个问题.AFAICT那里没有办法说public String id 替换 {{1}如果有人知道如何做到这一点,我对如何做感兴趣。

答案 1 :(得分:1)

您还可以使用@ org.mongojack.Id注释任何String字段。 这对我有用。