spring-projects / spring-projects/spring-data-rest
RepositoryPropertyReferenceController doesn't use EntityLookupRegister to delete subresource [DATAREST-1400]
@odrotbohm is already working on this.
Since Dec 31, 2020.
- Dominant language
- Java
- Stars
- 958
- Forks
- 568
- PR merge metrics
- No merged PRs in 30d
Description
Jaime Mendes opened DATAREST-1400 and commented
When using entities with Custom Ids using the EntityLookupRegistrar, most operations are successful except when editing subresources by their specific id (in this case, the resource has a uuid while in the database is a long).
Example:
DELETE http://localhost:8080/parent/parent-uuid/child/child-uuid
The RepositoryPropertyReferenceController tries to delete the subresource from the parent's collection by comparing each the custom id against prop.entity.getIdentifierAccessor(obj).getIdentifier(), which has the database id.
The issue seems similar to DATAREST-1304, where the fix was using a property lookup
I tried to override the behavior this controller to add this behavior but the class is not public.
Another way would be to edit prop.entity.getIdentifierAccessor(obj).getIdentifier() to obtain the correct id to compare, but Hibernate doesn't have an entry point for it.
Workarounds, if possible, are welcomed until the next release
Affects: 3.1.9 (Lovelace SR9)
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.