我正在为给定场景寻找规范的替代方案
I am looking for an alternative to Specifications for the given scenario
我调用 JpaRepository 的 findall()
方法如下
服务
on.findall(specificationsbuilder.getspecifications(params), paegable obj)
specificationsbuilder.getspecifications(param)
returns 规格
我的问题是,如果 specifications 为空,我将 findall(specifications,paegable) 工作
阅读此处:https://jira.spring.io/browse/DATAJPA-121,截至最新 spring 数据 jpa,如果您的参数为 null,查询将自动形成为 null。
此外,由于 Spring data jpa 2.0,spring 现在支持 @Nullable 注释。这有助于处理传递的空参数。
@Nullable – 用于可以为 null 的参数或 return 值。
如果该值为空,它将自动 return 为真,如果不为空,它将在 table.
中搜索该值
根据 sourcecode of SimpleJpaRepository 它应该可以工作,因为 @Nullable 说它会接受 null:
@Override
public Page<T> findAll(@Nullable Specification<T> spec, Pageable pageable) {
TypedQuery<T> query = getQuery(spec, pageable);
return isUnpaged(pageable) ? new PageImpl<T>(query.getResultList())
: readPage(query, getDomainClass(), pageable, spec);
}
我调用 JpaRepository 的 findall()
方法如下
服务
on.findall(specificationsbuilder.getspecifications(params), paegable obj)
specificationsbuilder.getspecifications(param)
returns 规格
我的问题是,如果 specifications 为空,我将 findall(specifications,paegable) 工作
阅读此处:https://jira.spring.io/browse/DATAJPA-121,截至最新 spring 数据 jpa,如果您的参数为 null,查询将自动形成为 null。
此外,由于 Spring data jpa 2.0,spring 现在支持 @Nullable 注释。这有助于处理传递的空参数。
@Nullable – 用于可以为 null 的参数或 return 值。
如果该值为空,它将自动 return 为真,如果不为空,它将在 table.
中搜索该值根据 sourcecode of SimpleJpaRepository 它应该可以工作,因为 @Nullable 说它会接受 null:
@Override
public Page<T> findAll(@Nullable Specification<T> spec, Pageable pageable) {
TypedQuery<T> query = getQuery(spec, pageable);
return isUnpaged(pageable) ? new PageImpl<T>(query.getResultList())
: readPage(query, getDomainClass(), pageable, spec);
}