0

Ich sende eine PATCH-Anfrage mit Null-Werten in einigen Eigenschaften der Entität, und ich sehe, dass die Felder in der Datenbank aktualisiert werden, während sie nach Spezifikation sollten sie nicht 't (teilweise Aktualisierung). Wenn ich versuche zu verstehen, was passiert, sehe ich, dass der DomainObjectMerger als @Bean instanziiert wird, aber seine Merge-Methode nie benutzt wird (keine Referenzen gefunden und im Debug-Modus wird der Breakpoint nie ausgelöst). Kann jemand erklären, wie und wann DomainObjectMerger verwendet wird?Spring Data REST aktualisiert NULL-Eigenschaften auf PATCH (wenn es nicht sollte)

EDIT: Ich erstellte ein Beispielprojekt mit einem fehlgeschlagenen Test. Der Test versucht, eine Entität zu kennzeichnen, die als Passwort null gibt, und erwartet, dass das Passwort nicht betroffen ist. Aber es funktioniert nicht, weil das Kennwort jetzt null in der Datenbank

https://github.com/otinanism/demo-rest-data

Antwort

2

Der Code wie erwartet funktioniert. Ihre PATCH Nutzlast sieht wie folgt aus:

{"id":"bc421109-edaf-4d4f-8d4c-71b62aa4d99f","username":"alex","password":null} 

, dass der Server erzählt den Wert für die password Feld auszulöschen. Wenn Sie das Kennwortfeld unverändert lassen möchten, stellen Sie sicher, dass es nicht einmal in der Anforderungsnutzlast enthalten ist, z. Konfigurieren Sie ObjectMapper, um Werte null nicht zu rendern.

+0

Das funktioniert zwar (aber ist es irgendwo dokumentiert?). Also, ich nehme an, dass DomainObjectMerger damit nicht verwandt ist? Ich bin verwirrt wegen dieser alten issuse: https://jira.spring.io/browse/DATAREST-130 Vielen Dank für die Rückmeldung! – alex

+2

Das Verhalten ist im Grunde, was in [RFC7386] (https://tools.ietf.org/html/rfc7386) definiert ist. –

Verwandte Themen