Сопоставление поля ObjectId с использованием Spring Data MongoDB - PullRequest
1 голос
/ 07 апреля 2020

У меня есть два документа в двух разных коллекциях в mongodb:

{
    _id: ObjectId("5ba529f2bf95d10010da97c2"),
    name: "documentInCollectionA"
}

документ в коллекции B имеет поле ObjectId со значением из документа в коллекции A:

{
    _id: ObjectId("some id"),
    name: "documentInCollectionB",
    myOtherDoc: ObjectId("5ba529f2bf95d10010da97c2")
}

и я сопоставляю свои java классы, такие как:

@Document(colection = "colA")
class DocA {
    private String _id, name;
    //getters setters
}


@Document(collection = "colB")
class DocB {
    private String _id, name, myOtherDoc;
    //getters setters
}

Но когда я загружаю свой DocB из db, заполняются все остальные поля, кроме myOtherDo c, myOtherDo c становится пустым. Я пробовал отображать DocB разными способами:

@Document(collection = "colB")
class DocB {
    private String _id, name;

    @Field(name: "myOtherDoc")
    private org.bson.ObjectId myOtherDoc;
    //getters setters
}

@Document(collection = "colB")
class DocB {
    private String _id, name;

    @Field(name: "myOtherDoc")
    private BigInteger myOtherDoc;
    //getters setters
}

@Document(collection = "colB")
class DocB {
    private String _id, name;

    @DBRef or @DBRef(db = "colA")
    private DocA myOtherDoc;
    //getters setters
}


@Document(collection = "colB")
class DocB {
    private String _id, name;

    @Field(name: "myOtherDoc")
    private DocA myOtherDoc;
    //getters setters
}

, но безуспешно ... Я вижу, что значение не равно нулю в моей базе данных, но свойство java не заполняется. Есть идеи как его заселить?

...