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)
,