Spring mongodb get ID of inserted item after Save

陌路散爱 提交于 2020-01-01 08:28:15

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!