сохраненный документ с идентификатором null - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть документ tariffGrid, который содержит встроенный документ subGrids, когда я сохраняю документ TariffGrid, id встроенного документа сохраняется как ноль

, который я использовал private ObjectId _id для внедренного документа, но там все та же проблема

@Document
public class TariffGrid {

    @Id
    private String id;

    private List<SubGrid> subGrids;

}

@Document
public class SubGrid {

    @Id
    private String id;

    private String name;

}

{
    "_id" : ObjectId("5d8df1f9ccd0df45146817a6"),
    "subGrids" : [ 
        {
            "_id" : null,
            "name" : "string"
        }
    ]
}

1 Ответ

0 голосов
/ 30 сентября 2019

Если вы хотите сохранить SubGrid как внедренный документ, нет необходимости в @Document и @Id для класса SubGrid.Итак, здесь вы звоните save() на объекте TariffGrid верно?поэтому spring-data-mongo сгенерирует уникальный «Id» перед сохранением документа.Spirng-data-mongo не будет автоматически генерировать идентификатор для удаленных документов.Предположим, что если вы вызываете еще один метод репозитория save() с объектом SubGrid, он автоматически генерирует поле id, так как вы добавили аннотации, но это означает, что SubGrid будет сохранен отдельно еще в одной коллекции и тамбудет иметь id.

Я полагаю, что вы перепутали его с тем, что он был таким же, как в случае спящего режима, когда он использовался для сохранения связанных сущностей также с использованием @oneToMany и CascadeType.Но это не относится к mongoDB и к внедренным документам.

...