Spring数据JPA和参数可以为空

我的理解是,对于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种不同的查询方法。

回答:

你是对的。

已提出支持更好地处理空参数的请求。

https://jira.spring.io/browse/DATAJPA-121

在您的情况下,我建议您编写存储库实现并使用自定义的CriteriaQuery处理您的情况。

您也可以将@Query注释与is

null语法一起使用:

@Query("[...] where :parameter is null"

public List<Something> getSomethingWithNullParameter();

从Spring data jpa 2.0开始,spring现在支持@Nullable注释。这有助于处理传递的空参数。

从文档中:

@Nullable –用于可以为空的参数或返回值。

以上是 Spring数据JPA和参数可以为空 的全部内容, 来源链接: utcz.com/qa/427998.html

回到顶部