Spring mongodb获取保存后插入项目的ID

时间:2014-11-18 03:37:49

标签: mongodb spring-mongo

我正在使用Spring MongoDb。

我使用insert方法创建各种实体: http://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoOperations.html#insert-java.lang.Object-

但是,所有方法都返回void。我需要返回插入文档的ObjectId

获得它的最佳方式是什么?

2 个答案:

答案 0 :(得分:27)

这很有意思,我想我会分享。我在上面的BatScream评论的帮助下找到了解决方案:

您将创建一个对象并将其插入MongoDB:

    Animal animal = new Animal();
    animal.setName(name);
    animal.setCat(cat);

    mongoTemplate.insert(animal);

您的动物类看起来像所有字段的getter和设置:

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。

答案 1 :(得分:0)

我对@AlanH遇到同样的问题,即animal.getId()null。然后我才意识到我的id字段已使用wither方法设置为最终字段。因此,当然getId()为空,因为id字段是不可变的,并且wither方法返回一个具有id的新对象。

如果是这种情况:请使用animal = template.insert(animal)