spring-projects / spring-projects/spring-data-rest

RepositoryPropertyReferenceController doesn't use EntityLookupRegister to delete subresource [DATAREST-1400]

Open
#1,759 0 comments 0 reactions 1 assignee View on GitHub

@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

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)

Reference URL: https://github.com/spring-projects/spring-data-rest/blob/master/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryPropertyReferenceController.java#L358

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.