问题
I am working with Spring MongoDb.
I create various entities using insert
method:
http://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoOperations.html#insert-java.lang.Object-
However, all methods return void
. I need to return the ObjectId
of the inserted document.
What is the best way to get it?
回答1:
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.
回答2:
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)
.
来源:https://stackoverflow.com/questions/26986183/spring-mongodb-get-id-of-inserted-item-after-save