Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Boot MongoRepository ignoring validation

I have a Mongodb repository that is working fine:

@RepositoryRestResource(collectionResourceRel = "audits", path = "audits")
public interface AuditRepository extends MongoRepository<Audit, String> {
}

I have a bean, Audit that is:

@Data
@Document
@JsonIgnoreProperties(ignoreUnknown = true)
@Validated
public class Audit {
    @Id private String id;

    @NotNull
    private Date start;

    @NotNull
    private Date end;
}

I'm using Lombok for getters/setters.

I expect the Repository to validate the Audit bean, but it saves an audit bean with null in the start and end date.

I added this to the build.gradle:

compile("org.springframework.boot:spring-boot-starter-validation")

How do I tell the REST service to use validation? I don't see anything in RepositoryRestConfiguration that will turn it on...

like image 332
mikeb Avatar asked May 12 '26 06:05

mikeb


1 Answers

You must import validations libs:

maven

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.4.2.Final</version>
</dependency>

or gradle

compile group: 'org.hibernate', name: 'hibernate-validator', version: '5.4.2.Final'

and you must configure two beans:

@Bean
public LocalValidatorFactoryBean localValidatorFactoryBean() {
    return new LocalValidatorFactoryBean();
}

@Bean
public ValidatingMongoEventListener validatingMongoEventListener(LocalValidatorFactoryBean lfb) {
    return new ValidatingMongoEventListener(lfb);
}
like image 85
Jialzate Avatar answered May 14 '26 18:05

Jialzate