-
Notifications
You must be signed in to change notification settings - Fork 562
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Avoid wiping non-writable fields in nested objects when modifying a persistent object using PUT #2174
Closed
vierbergenlars
wants to merge
1
commit into
spring-projects:main
from
vierbergenlars:fix-embedded-objectsw
Closed
Avoid wiping non-writable fields in nested objects when modifying a persistent object using PUT #2174
vierbergenlars
wants to merge
1
commit into
spring-projects:main
from
vierbergenlars:fix-embedded-objectsw
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Because `#mergeForPut()` fetches the `PersistentEntity` based on the class of `target`, we can't pass `Optional<>` as source or target, as that would lead to nested objects (e.g. JPA `@Embeddable`) are not considered as persistent entities. That leads to properties of that are `@JsonIgnored` or `@JsonProperty(access = READ_ONLY)` to be null'ed, because the freshly deserialized source object is used directly, and those properties are never written to by jackson.
spring-projects-issues
added
the
status: waiting-for-triage
An issue we've not yet triaged
label
Aug 26, 2022
vierbergenlars
changed the title
Unwrap Optional for nested entities when merging objects
Avoid wiping non-writable fields in nested objects when modifying a persistent object using PUT
Nov 17, 2022
odrotbohm
added a commit
that referenced
this pull request
Feb 21, 2023
This is needed to consider read-only properties within those objects as those would otherwise get overridden. Fixes: #2174
odrotbohm
added a commit
that referenced
this pull request
Feb 21, 2023
This is needed to consider read-only properties within those objects as those would otherwise get overridden. Fixes: #2174
odrotbohm
added
type: bug
A general bug
and removed
status: waiting-for-triage
An issue we've not yet triaged
labels
Feb 21, 2023
I believe this change had the side-effect of causing fields named "id" in directly nested objects in MongoDB documents to no longer update when a PUT request is issued (see #2280 for details). I noticed this as a new failure that occurred in a project I was upgrading to the newest version of the Spring Framework. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Because
#mergeForPut()
fetches thePersistentEntity
based on theclass of
target
, we can't passOptional<>
as source or target, asthat would lead to nested objects (e.g. JPA
@Embeddable
) are notconsidered as persistent entities.
That leads to properties of that are
@JsonIgnored
or@JsonProperty(access = READ_ONLY)
tobe null'ed, because the freshly deserialized source object is used
directly, and those properties are never written to by jackson.