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

Automatically perform JSR 303 Bean Validation on beforeCreate/beforeSave [DATAREST-370]

Open
#751 3 comments 3 reactions 1 assignee View on GitHub

@odrotbohm is already working on this.

Since Dec 31, 2020.

has: votes-jira type: enhancement
Dominant language
Java
Stars
958
Forks
568
PR merge metrics
No merged PRs in 30d

Description

Marcel Overdijk opened DATAREST-370 and commented

When using JSR 303 annotations on @Entity domain classes validation is not triggered automatically beforeCreate and beforeSave.

However itself JPA is validating after all automatically but it throws a ConstraintViolationException which is not picked up by Spring Data REST and hence causes a 500 without sending errors back to client.

This can be solved by configuring the Spring Data REST validation by using:

@Configuration
protected static class CustomRepositoryRestMvcConfiguration extends RepositoryRestMvcConfiguration {

    @Autowired
    private Validator validator;

    @Override
    protected void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
        validatingListener.addValidator("beforeCreate", validator);
        validatingListener.addValidator("beforeSave", validator);
    }
}

It would be nice to automatically do this if JSR 303 bean validation is enabled, or make this configurable?


Affects: 2.1.2 (Dijkstra SR2)

Issue Links:

  • DATAREST-875 Improve problem reporting during deserialization to collect all problems and report them as a whole

16 votes, 15 watchers

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.