代码之家  ›  专栏  ›  技术社区  ›  Jin Kwon

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

  •  1
  • Jin Kwon  · 技术社区  · 6 年前

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

    测试用例只是通过了。

    3 回复  |  直到 6 年前
        1
  •  5
  •   kingGarfield    6 年前

    根据 Spring JPA document

    要启用查询方法的可空性约束的运行时检查,需要使用spring在包级别激活非可空性 @NonNullApi .

    package-info.java 文件,并在文件。然后呢将此批注添加到包中,如下所示:

    @org.springframework.lang.NonNullApi
    package com.example;
    
        2
  •  1
  •   GauravRai1512    6 年前

    我建议在spring框架中使用javax验证,假设您使用的是maven,那么您只需包含以下依赖项

    <dependency>
                <groupId>javax.validation</groupId>
                <artifactId>validation-api</artifactId>
            </dependency>
    

    之后请尝试下面的代码

    Some findByKey(
                @NotNull final String key);
    
        3
  •  1
  •   Robert Robertino    5 年前

    Rule findOneByExpression(@Nullable String expression);
    ruleRepository.findOneByExpression(null);
    

    如果它返回null,则看到它失败。然后像这样改变它:

    @Nullable 
    Rule findOneByExpression(@Nullable String expression);
    

    它会过去的。