spring-projects / spring-projects/spring-data-rest
Automatically perform JSR 303 Bean Validation on beforeCreate/beforeSave [DATAREST-370]
@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
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
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.