spring-projects / spring-projects/spring-data-rest
DomainObjectReader removes unwrapped properties [DATAREST-912]
Open
@odrotbohm is already working on this.
Since Dec 31, 2020.
type: bug
- Dominant language
- Java
- Stars
- 958
- Forks
- 568
- PR merge metrics
- No merged PRs in 30d
Description
Jan Van Rensbergen opened DATAREST-912 and commented
When using the jackson @JsonUnwrapped annotation the doMerge method on the DomainObjectReader will remove the JsonNode from the iterator before the ObjectReader reads from the RootNode.
private <T> T doMerge(ObjectNode root, T target, ObjectMapper mapper) throws Exception {
...
for (Iterator<Entry<String, JsonNode>> i = root.fields(); i.hasNext();) {
Entry<String, JsonNode> entry = i.next();
JsonNode child = entry.getValue();
if (child.isArray()) {
continue;
}
String fieldName = entry.getKey();
if (!mappedProperties.hasPersistentPropertyForField(fieldName)) {
i.remove(); //<-- this will remove my unwrapped properties
continue;
}
...
return mapper.readerForUpdating(target).readValue(root);
}
When objects uses @Unwrapped in a collection this problem does not occur because Array child nodes are skipped.
Issue Links:
- DATAREST-910 Support nested Sort properties
1 votes, 3 watchers
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.