私はSpringMongoDbを使用しています。
insert
メソッドを使用してさまざまなエンティティを作成します: http://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoOperations .html#insert-Java.lang.Object-
ただし、すべてのメソッドはvoid
を返します。挿入されたドキュメントのObjectId
を返す必要があります。
それを取得するための最良の方法は何ですか?
これはかなり興味深く、私が共有したいと思いました。上記のBatScreamコメントの助けを借りて、これに対する解決策を見つけました:
オブジェクトを作成してMongoDBに挿入します。
_ Animal animal = new Animal();
animal.setName(name);
animal.setCat(cat);
mongoTemplate.insert(animal);
_
動物クラスは、すべてのフィールドのゲッターと設定で次のようになります。
_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が返されます。
@AlanHでも、animal.getId()
がnull
であるという同じ問題が発生しました。そして、idフィールドがwither
メソッドで最終フィールドとして設定されていることに気づきました。したがって、もちろんgetId()
はnullです。これは、idフィールドが不変であり、wither
メソッドがidを持つ新しいオブジェクトを返すためです。
この場合:animal = template.insert(animal)
を使用します。