spring-projects / spring-projects/spring-data-rest
Support for @ElementCollection deserialization (1.0.0 Branch)
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 958
- Forks
- 568
- PR merge metrics
- No merged PRs in 30d
Description
When using JPA The RepositoryAwareJacksonModule doesn't seem to deserialize an @ElementCollection of type Map correctly.
ie an entity with:
...
@ElementCollection
private Map<Long, String> userIdSessionKeys;
...
which is attempted to be created with:
... , 'userIdSessionKeys': { 123: 'aslkdfjalkj=43Z' }, ...
Will case an error at line 329 of the RepositoryAwareJacksonModule, either assigning the key of the map element as a property or as a hateos reference.
Ideally when the attrMeta.attribute.persistentAttributeType is ELEMENT_COLLECTION is detected (I have no idea what the equivalent is in other spring-data modules) the default jackson deserializer type parser is used.
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.
Research direction
Start by reading RepositoryAwareJacksonModule around line 329 and trace how Map entries in an @ElementCollection are interpreted during deserialization. Compare that path with the default Jackson type parsing and check how other Spring Data modules handle equivalent metadata. Done means a Map<Long, String> element collection can be created from the shown JSON without treating its key as a property or HAL reference.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, spring
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100