Spring mongodb получает идентификатор вставленного элемента после сохранения

Я работаю с Spring MongoDb.

Я создаю различные объекты, используя insert метод: http://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoOperations.html

Однако все методы возвращают void, Мне нужно вернуть ObjectId вставленного документа.

Каков наилучший способ получить это?

1 ответ

Решение

Это довольно интересно и думал, что поделюсь. Я только что нашел решение для этого с помощью комментария BatScream выше:

Вы должны создать объект и вставить его в MongoDB:

    Animal animal = new Animal();
    animal.setName(name);
    animal.setCat(cat);

    mongoTemplate.insert(animal);

Ваш класс животных выглядит так с геттерами и настройками для всех полей:

public class Animal {

    @Id
    @JsonProperty
    private String id;
    @JsonProperty
    private String name;
    @JsonProperty
    private String cat;

    public String getId() {
        return id;
    }
}

ПОСЛЕ ТОГО, КАК вы сделали вставку под mongoTemplate.insert(animal);вы можете вызвать метод animal.getId() и он вернет обратно ObjectId, который был создан.

У меня была такая же проблема с @AlanH, что animal.getId() является null, А потом я просто понял, что мое поле идентификатора было установлено в качестве последнего поля с wither метод. Так конечно getId() является нулевым, так как поле id является неизменным и wither Метод возвращает новый объект с идентификатором.

если это так: используйте animal = template.insert(animal),

Другие вопросы по тегам