gpt4 book ai didi

java - 使用 where & 和 运算符动态链接规范

转载 作者:行者123 更新时间:2023-12-02 05:37:27 25 4
gpt4 key购买 nike

我正在寻找一种方法来为我的存储库制定全局规范,以便执行以下操作:

return applicantRepository.findAll(globalSpecificationApplicant, pageRequest);

事实上,我得到了一个规范数组,我想循环到使用 where & 和运算符构建存储库全局规范(所有规范都在我的请求中)。

这是我的服务:

 public Page<Applicant> findWithParams(RechercheApplicantForm form, PageRequest pageRequest) {

if(form.isEmptyForm()) {
logger.debug("empty form findAll");
return findAll(pageRequest);
}
else {
logger.debug("form ok fnidAllLikeForm");

List<Specification<Applicant>> lSpecificationApplicant = applicantRepository.getAllSpecificationsLikeForm(form);
Specification<Applicant> globalSpecificationApplicant = null;
if (lSpecificationApplicant != null){

globalSpecificationApplicant = where(lSpecificationApplicant.get(0));

for (int i = 1; i < lSpecificationApplicant.size(); i++){

// Doesnt work : "and" not defined
globalSpecificationApplicant = globalSpecificationApplicant.and(lSpecificationApplicant.get(i));
}
}

return applicantRepository.findAll(globalSpecificationApplicant, pageRequest);

}

}

我可以对第一个规范使用 where 子句,但我无法对之后的 and 子句执行相同的操作。

最佳答案

Specifications.where() 返回 Specifications 的实例(它是 Specification 的子类型),您需要声明 globalSpecificationApplicant相应地使用它的实例方法:

Specifications<Applicant> globalSpecificationApplicant = null;
...
globalSpecificationApplicant = globalSpecificationApplicant.and(lSpecificationApplicant.get(i));

关于java - 使用 where & 和 运算符动态链接规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24840748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com