Spring mongodb get ID of inserted item after Save
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)
.
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.