spring - 如何使用 spring 存储库进行 bean 验证?

标签 spring spring-data-jpa spring-data bean-validation

我正在尝试使用我的存储库界面,如下所示。

interface SomeRepository extends JpaRepository<Some, Long> {

   @org.springframework.lang.Nullable
   Some findByKey(
            @org.springframework.lang.NonNull
            @javax.validation.constraint.NotNull
            final String key);
}

而且我发现这些约束没有按预期工作。

@Test
void findByKeyWithNullKey() {
    repository.findByKey(null);
}

测试用例简单地通过了。

我怎样才能让它发挥作用?

最佳答案

根据 Spring JPA document :

要为查询方法启用可空性约束的运行时检查,您需要使用 Spring 的 @NonNullApi 在包级别激活不可空性。

您可以简单地通过创建 package-info.java 文件并在文件中添加它相关的包声明来添加包注释。然后像这样将此注释添加到您的包中:

@org.springframework.lang.NonNullApi
package com.example;

关于spring - 如何使用 spring 存储库进行 bean 验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52362421/

相关文章:

java - 如何创建扩展 AuditingEntityListener 的自定义审核实体监听器

Java返回空列表而不是对象

java - JpaRepository、@Transaction 和 repository.saveAndFlush

java - 我必须创建另一个 RowMapper 吗?

java - 如何在 JPA 存储库之外定义存储过程

Spring第一次请求非常慢

java - 使用 Spring Data Mongo 从 MongoDB 获取数组元素

java - Hibernate,更新表单bean给出错误?

java - 如何使用 Spring MVC 将多个值从表单传递到 Controller ?

java - Spring Boot 自动配置的 Jackson ObjectMapper 默认情况下不用于 WebFlux WebClient