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 に答える