简体   繁体   中英

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...

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);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM