Java 使用where&;和操作员

Java 使用where&;和操作员,java,spring,jakarta-ee,spring-data-jpa,specifications,Java,Spring,Jakarta Ee,Spring Data Jpa,Specifications,我正在寻找一种为我的存储库制定全局规范的方法,以便执行以下操作: return applicantRepository.findAll(globalSpecificationApplicant, pageRequest); 事实上,我得到了一个规范数组,我想循环使用where&和操作符构建存储库全局规范(我的请求中需要所有规范) 这是我的服务: public Page<Applicant> findWithParams(RechercheApplicantForm form, P

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

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

    }

}
公共页面findWithParams(RecherCheapplicationForm,PageRequest PageRequest){
if(form.isEmptyForm()){
debug(“空表单findAll”);
返回findAll(页面请求);
}
否则{
debug(“form ok fnidAllLikeForm”);
List lsspecificationapplicator=applicationrepository.getAllSpecificationsLkeForm(表格);
规范GlobalSpecificationApplication=null;
if(lsspecificationapplicator!=null){
GlobalSpecificationApplication=其中(lsSpecificationApplication.get(0));
对于(int i=1;i
我可以对第一个规范使用where子句,但不能对..

规范后的and子句使用where子句。where()
返回
规范的一个实例(它是
规范的一个子类型
),您需要相应地声明
GlobalSpecificationApplication
,才能使用其实例方法:

Specifications<Applicant> globalSpecificationApplicant = null;
...
globalSpecificationApplicant = globalSpecificationApplicant.and(lSpecificationApplicant.get(i));
规范GlobalSpecificationApplication=null;
...
globalsspecificationapplication=globalsspecificationapplication.and(lsspecificationapplication.get(i));

您对此进行了测试吗?因为我没有发布我的试用版,但这不起作用,“and”操作符似乎只会直接链接到“where”子句。。这就是我发布的原因。请注意
globalspecificationapplicator
的定义-它是
规范
,而不是
规范
。很抱歉,我没有看到这一点。。非常感谢。它现在已经被弃用了