Spring mongodb get ID of inserted item after Save
This is pretty interesting and thought I would share. I just figured out the solution for this with the help of BatScream comment above:
You would create an object and insert it into your MongoDB:
Animal animal = new Animal(); animal.setName(name); animal.setCat(cat); mongoTemplate.insert(animal);
Your animal class looks like this with getters and settings for all fields:
public class Animal { @Id @JsonProperty private String id; @JsonProperty private String name; @JsonProperty private String cat; public String getId() { return id; }}
AFTER you have done the insert under mongoTemplate.insert(animal);
, you can actually call the method animal.getId()
and it will return back the ObjectId that was created.
I had the same problem with @AlanH that animal.getId()
is null
. And then I just realized my id field had been set as a final field with a wither
method. So of course getId()
is null since the id field is immutable and the wither
method returns a new object with id.
if this is the case: use animal = template.insert(animal)
.