我的理解是,对于 Spring 数据 JPA,我无法使用查询方法来获取列等于给定非空方法参数的所有行,并且在方法参数为 null 时使用相同的方法来获取此列为 NULL 的所有行.
那是对的吗?
所以我必须在我的 JAVA 代码中区分这一点,并且我必须使用单独的查询方法明确要求空值,如下例所示?
// Query methods
List<Something> findByParameter(Parameter parameter);
List<Something> findByParameterIsNull();
...
List<Something> result = new ArrayList<>();
if (parameter == null)
result = findByParameterIsNull();
else
result = findByParameter(parameter);
这很糟糕,如果我有 4 个可能为 null 的参数并且必须编写 16 种不同的查询方法。
原文由 Sebastian S. 发布,翻译遵循 CC BY-SA 4.0 许可协议
你说的对。
已请求支持更好地处理空参数。 https://jira.spring.io/browse/DATAJPA-121
对于您的情况,我建议您编写存储库实现并使用自定义 CriteriaQuery 来处理您的情况。
您还可以使用带有 is null 语法的 @Query 注释:
编辑
从Spring data jpa 2.0开始,spring现在支持@Nullable注解。这有助于处理传递的空参数。
从 文档 中: