Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有PageRequest和谓词失败的Spring数据JPA_Java_Spring_Jpa_Spring Data - Fatal编程技术网

Java 带有PageRequest和谓词失败的Spring数据JPA

Java 带有PageRequest和谓词失败的Spring数据JPA,java,spring,jpa,spring-data,Java,Spring,Jpa,Spring Data,我使用的是SpringDataJPA规范,我希望获得非repetead注册表,所以我在这样的查询中使用distinct public static Specification<Actividad> criteriosConsultaGruposHandling(final String cif, final String razonSocial, final String nombreComercial, final List<Long> idsHandling) {

我使用的是SpringDataJPA规范,我希望获得非repetead注册表,所以我在这样的查询中使用distinct

public static Specification<Actividad> criteriosConsultaGruposHandling(final String cif, final String razonSocial, final String nombreComercial, final List<Long> idsHandling) {

    Specification<Actividad> spec = new Specification<Actividad>() {

        @Override
        public Predicate toPredicate(Root<Actividad> root, CriteriaQuery<?> query, CriteriaBuilder cb) {

            query.distinct(true);

            List<Predicate> predicates = new ArrayList<Predicate>();
            if(cif != null && !cif.equals("")){
                predicates.add(cb.like(cb.upper(root.join(Actividad_.empresa).get(Empresa_.cif)), "%" + cif.toUpperCase() + "%" ));
            }
            if(razonSocial != null && !razonSocial.equals("")){
                predicates.add(cb.like(cb.upper(root.join(Actividad_.empresa).get(Empresa_.razonsocial)), "%" + razonSocial.toUpperCase() + "%" ));
            }
            if(nombreComercial != null && !nombreComercial.equals("")){
                predicates.add(cb.like(cb.upper(root.join(Actividad_.empresa).get(Empresa_.nombrecomercial)), "%" + nombreComercial.toUpperCase() + "%" ));
            }
            if(idsHandling != null && !idsHandling.isEmpty()){
                Predicate pred = cb.conjunction();
                pred.getExpressions().add(root.join(Actividad_.grupohandlingactividads).get(Grupohandlingactividad_.grupohandling).get(Grupohandling_.idsubgrupo).in(idsHandling));
                predicates.add(pred);                   
            }

            return cb.and(predicates.toArray(new Predicate[0]));
        }
    };

    return spec;
}
公共静态规范标准ConsultAgrupoShandling(最终字符串cif、最终字符串razonSocial、最终字符串NombRecommeric、最终列表idsHandling){
规格规格=新规格(){
@凌驾
公共谓词toPredicate(根根、CriteriaQuery查询、CriteriaBuilder cb){
query.distinct(true);
列表谓词=新的ArrayList();
如果(cif!=null&!cif.equals(“”){
add(cb.like(cb.upper(root.join(Actividad_.empresa.get(empresa_.cif)),“%”+cif.toUpperCase()+“%”);
}
如果(razonSocial!=null&&!razonSocial.equals(“”){
add(cb.like(cb.upper(root.join(Actividad_.empresa.get(empresa_.razonsocial)),“%”+razonsocial.toUpperCase()+“%”);
}
if(nombrecomerical!=null&!nombrecomerical.equals(“”){
add(cb.like(cb.upper(root.join(Actividad_.empresa.get(empresa_.nombrecomeral)),“%”“%”+nombrecomeral.toUpperCase()+“%”);
}
if(idsHandling!=null&&!idsHandling.isEmpty()){
谓词pred=cb.conjunction();
pred.getExpressions().add(root.join(Actividad_u.grupHandlingactividads).get(grupHandlingactividad_u.grupHandling).get(grupHandling_u.idsubgrupo).in(idsHandling));
谓词.add(pred);
}
返回cb.and(谓词toArray(新谓词[0]);
}
};
返回规格;
}
}

但是,当我使用规范和pagerequest进行findAll时,查询产生的页面是不好的

Specification<Actividad> specificationActividad = ActividadSpecifications.criteriosConsultaGruposHandling(actividadForm.getEmpresa().getCif(), 
            actividadForm.getEmpresa().getRazonsocial(), actividadForm.getEmpresa().getNombrecomercial(),listaGruposAsignados);
    PageRequest pageRequest = new PageRequest(actividadForm.getPagina() -1, actividadForm.getMaxRegistros(), actividadForm.getOrder());
    Page<Actividad> resultados = actividadRepository.findAll(specificationActividad, pageRequest);
规范规范actividad=ActividadSpecifications.criteriosConsultaGruposHandling(actividadForm.getEmpresa().getCif(),
actividadForm.getEmpresa().getRazonsocial(),actividadForm.getEmpresa().GetNombRecommerial(),ListAgruposaignados);
PageRequest PageRequest=新的PageRequest(actividForm.getPagina()-1,actividForm.getMaxRegistros(),actividForm.getOrder());
Page resultados=actividadRepository.findAll(规范actividad,页面请求);
当我在没有pageRequest参数的情况下调用findAll时,我获得的行没有重复,但当我使用它调用findAll时,不会删除重复的行。 有人能帮我吗?提前谢谢