计数标准联接列

我正在尝试计算用户使用的过滤器的行数,当用户想要列出所有可以正常使用的过滤器时,问题出在他们使用过滤器的时候,这会使某些联接正常工作。

(这用于jsf中的惰性数据表)

我的标准代码是:

        CriteriaBuilder cb = em.getcriteriaBuilder();
        CriteriaQuery<CarreraHorizontal> cq = cb.createQuery(CarreraHorizontal.class);
        Root<CarreraHorizontal> root = cq.from(CarreraHorizontal.class);
        CriteriaQuery<Long> cqCount = cb.createQuery(Long.class);
        List<Predicate> predicates = new ArrayList<Predicate>();

        Join<CarreraHorizontal,Gdp> childJoin = root.join("gdp",JoinType.LEFT);
        Join<CarreraHorizontal,Empleado> childJoin2 = root.join("empleado",JoinType.LEFT);

        if (!StringUtils.isBlank(grupoTitulacion))
            predicates.add(cb.like(root.<String>get("grupoTitulacion"),"%" + grupoTitulacion + "%"));

        if(gdp0Bool) {
            predicates.add(cb.like(childJoin.<String>get("nombre"),"GDP0"));
            if(!StringUtils.isBlank(gdp0Combo))
                predicates.add(cb.le(childJoin.<Integer>get("numEscalones"),Integer.parseInt(gdp0Combo)));
        }

        if(epg6) {
            predicates.add(cb.equal(childJoin2.get("progresionescalon"),epg6));
        }   
        //cq.where(cb.and(predicates.toArray(new Predicate[predicates.size()])));
        cqCount.where(cb.and(predicates.toArray(new Predicate[predicates.size()])));

        Root<CarreraHorizontal> rootCount = cqCount.from(CarreraHorizontal.class);

        CriteriaQuery<Long> a = cqCount.select(cb.count(rootCount));
        TypedQuery<Long> res = em.createQuery(a.select(cb.count(rootCount)));

        return res.getSingleResult();

我的例外是:

无效的路径:'generatedAlias1.progresionescalon'[从es.valencia.gp.sbch.entity.CarreraHorizo​​ntal中选择count(generatedAlias0)作为generateAlias0,其中generateAlias1.progresionescalon =:param0]

我尝试了发现的所有内容,但仍无法正常工作。

meduwo 回答:计数标准联接列

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3073417.html

大家都在问