【问题标题】:Spring Boot MongoRepository ignoring validationSpring Boot MongoRepository 忽略验证
【发布时间】:2018-06-22 21:38:39
【问题描述】:

我有一个运行良好的 Mongodb 存储库:

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

我有一个豆子,Audit,即:

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

    @NotNull
    private Date start;

    @NotNull
    private Date end;
}

我将 Lombok 用于 getter/setter。

我希望存储库验证 Audit bean,但它保存了一个审计 bean,其开始和结束日期为 null

我将此添加到build.gradle

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

如何告诉 REST 服务使用验证?我在RepositoryRestConfiguration 中看不到任何可以打开它的东西...

【问题讨论】:

    标签: java spring mongodb validation spring-boot


    【解决方案1】:

    您必须导入验证库:

    行家

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

    或分级

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

    而且你必须配置两个bean:

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

    【讨论】:

    • 所以我更新了 Hibernate 版本(Hibernate 验证器 6 在这里不起作用)并修复了您的代码 sn-p 并将其标记为正确
    • 在 2021 年,如果您添加依赖项,它适用于 NotNull 但不适用于 NotBlank(在这种情况下它总是失败)。尽管我从stackoverflow.com/questions/42292359/… 复制了我的工作代码,但答案的其余部分看起来是正确的
    猜你喜欢
    • 2021-04-21
    • 2012-11-24
    • 2014-03-11
    • 2020-07-15
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2019-05-11
    • 2017-05-04
    相关资源
    最近更新 更多