Wir verwenden MongoDB über Spring Data und verlassen uns auf die Operation findAndModify
, um vorhandene Entitäten zu aktualisieren oder neue zu erstellen.
In findAndModify
können wir konfigurieren, dass der alte Zustand der Entity oder der neue Entity mit returnNew(...)
zurückgegeben wird.
Gibt es eine Möglichkeit, alte und neue Entitäten von findAndModify
zurückzugeben?
Wir müssen Entitätszustände vor und nach der Aktualisierung vergleichen, deshalb brauchen wir beide Instanzen.
Im Moment greifen wir auf requireNew(false)
zurück und aktualisieren dann manuell eine Kopie der alten Instanz, etwa so:
Funktioniert, ist aber nicht schön, da wir dieselben Dinge wiederholen müssen, die wir bereits in Update
auf der Kopie der alten Instanz machen.
Was wir ebenfalls in Betracht gezogen haben, war das erste Laden einer alten Instanz und das Ausführen des Updates, aber es ist nicht sicher, da die Entität möglicherweise zwischen dem Laden und dem Update geändert wurde. Dies kann mit Versionen und optimistischen Sperren behoben werden, aber das macht die Dinge noch komplizierter.
Gibt es eine Möglichkeit, alte und neue Entitäten von findAndModify zurückzugeben?
Nein , es gibt keine Möglichkeit, alte und neue Werte mit findAndModify
.
Nein, es gibt keine Möglichkeit, mit findAndModify alte und neue Werte zurückzugeben.
Wenn Sie jedoch den Status vor und nach dem Aktualisieren vergleichen möchten, führen Sie die folgenden Schritte aus
Unterhalb von Beispiel-Sudocode werden Sie beide Werte
zurückgeben %Vor%Tags und Links spring mongodb spring-data mongodb-java mongodb-query