3

我正在尝试遵循MongoJack 教程,但第一个任务失败了:将对象插入数据库。

这就是我所拥有的:

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)

而且我无法为我的生活找出原因。任何帮助表示赞赏。

4

2 回答 2

3

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

public String id;

public String _id;

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

于 2014-04-28T17:01:07.150 回答
1

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

于 2015-01-24T13:05:30.467 回答