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

Jin*_*won 2 spring bean-validation spring-data spring-data-jpa

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

interface SomeRepository extends JpaRepository<Some, Long> {

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

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

@Test
void findByKeyWithNullKey() {
    repository.findByKey(null);
}
Run Code Online (Sandbox Code Playgroud)

测试用例只是通过了。

我该如何运作?

kin*_*eld 5

根据Spring JPA文件

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

您可以简单地通过创建package-info.java文件来添加包注释,并在文件中添加与之相关的包声明,然后将该注释添加到您的包中,如下所示:

@org.springframework.lang.NonNullApi
package com.example;
Run Code Online (Sandbox Code Playgroud)