Frühjahr mongodb get ID des eingefügten Elements nach Speichern
Arbeite ich mit Feder MongoDb.
Erstelle ich verschiedene Entitäten mit insert
Methode:
http://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoOperations.html#insert-java.lang.Object-
Jedoch alle Methoden geben void
. Ich brauche die Rückkehr der ObjectId
des eingelegten Dokuments.
Was ist der beste Weg, um es zu bekommen?
If your object has an "Id' property, it will be set with the generated Id from MongoDB
haben ein Attribut namensId
. Sobald diese Methode aufgerufen wird, wird das Objekt, das Sie übergeben haben wirdId
Attribut gefüllt.- Außerdem brauchen Sie nicht, etwas zurückzugeben, da das Objekt wäre veränderlich.
- Danke. Ich würde zurückkehren müssen es in der Antwort von mein-REST-API. Ich habe eine API ausgesetzt, um ein Dokument zu erstellen
- Okay, Sie können immer tun
insert(someObject);
return someObject.getId()
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ziemlich interessant und dachte, ich würde teilen. Ich habe gerade herausgefunden, die Lösung für dieses mit Hilfe von BatScream Kommentar oben:
Erstellen Sie ein Objekt und fügen Sie es Ihrem MongoDB:
Ihrem Tier, Klasse sieht aus wie dies mit Getter und Einstellungen für alle Felder:
NACHDEM Sie das getan haben, legen Sie unter
mongoTemplate.insert(animal);
können Sie tatsächlich rufen Sie die Methodeanimal.getId()
und es kehrt zurück die ObjectId, die erstellt wurde.mongoOperations.insert(thing)
, gefolgt vonthing.getId()
, aber es kehrtenull
.Ich hatte das gleiche problem mit @AlanH, dass
animal.getId()
istnull
. Und dann habe ich einfach erkannt, dass mein id-Feld gesetzt wurde, die als Letzte Feld mit einemwither
Methode. So natürlichgetId()
ist null, da das id-Feld ist unveränderlich und diewither
- Methode gibt ein neues Objekt mit der id.wenn dies der Fall ist: verwenden Sie
animal = template.insert(animal)
.