The HQL statement does not recognize the AS?

0
@Override
public List<MaestroTablaDTO> buscarMaestroTabla(MaestroTablaDTO maestroTablaDTO) {
    LOG.info("Inicio -- MaestroTablaDAOImpl -- buscarMaestroTabla");    
        List<MaestroTablaDTO> retornoListaMaestroTablaDTO = null;
        try {

            /** Armando query */
            String queryString;
            StringBuilder jpql = new StringBuilder();

            jpql.append("SELECT new MaestroTabla ");            
            jpql.append("(");
            jpql.append("mt.id,mt.dominio,mt.descripcion,mt.esEditable,mt.estado, ");
            jpql.append("mt.usuarioCreacion,mt.fechaCreacion,mt.terminalCreacion, ");
            jpql.append("mt.usuarioActualizacion,mt.fechaActualizacion,mt.terminalActualizacion, ");
            jpql.append("(SELECT max(mc.id) from MaestroColumna mc where mc.estado=1 and mc.dominio=mt.dominio) AS numeroColumnas ");
            jpql.append(") ");
            jpql.append("FROM MaestroTabla mt ");

            if(maestroTablaDTO.getEstado()!=null && !maestroTablaDTO.getEstado().isEmpty()){
                jpql.append("WHERE mt.estado =:estado ");
            }

            if(maestroTablaDTO.getIdMaestroTabla()!=null && !maestroTablaDTO.getIdMaestroTabla().isEmpty()){
                jpql.append(" and mt.id =:idMaestroTabla ");
            }   

            if(maestroTablaDTO.getDominio()!=null && !maestroTablaDTO.getDominio().isEmpty()){
                jpql.append(" and mt.dominio like :dominio ");
            }

            if(maestroTablaDTO.getDescripcion()!=null && !maestroTablaDTO.getDescripcion().isEmpty()){
                jpql.append(" and mt.descripcion like :descripcion ");
            }   

            jpql.append(" ORDER BY mt.descripcion ASC ");

            /** Creando query */
            queryString = jpql.toString();
            Query query = crud.getEm().createQuery(queryString);

            System.out.println("<<queryString>>"+queryString);

            /** Setteando parámetros */
            if(maestroTablaDTO.getEstado()!=null && !maestroTablaDTO.getEstado().isEmpty()){
                query.setParameter("estado", maestroTablaDTO.getEstado());
            }               

            if(maestroTablaDTO.getIdMaestroTabla()!=null && !maestroTablaDTO.getIdMaestroTabla().isEmpty()){
                query.setParameter("idMaestroTabla", Integer.parseInt(maestroTablaDTO.getIdMaestroTabla()));
            }

            if(maestroTablaDTO.getDominio()!=null && !maestroTablaDTO.getDominio().isEmpty()){
                query.setParameter("dominio","%"+StringUtil.removeBlank(maestroTablaDTO.getDominio()).toUpperCase()+"%");
            }

            if(maestroTablaDTO.getDescripcion()!=null && !maestroTablaDTO.getDescripcion().isEmpty()){
                query.setParameter("descripcion","%"+StringUtil.removeBlank(maestroTablaDTO.getDescripcion()).toUpperCase()+"%");
            }

            /** Recuperar lista en DTO */
            retornoListaMaestroTablaDTO = MaestroTablaBuilder.getListMaestroTablaDomainToDto(query.getResultList());

        } catch (Exception e) {
            LOG.error("error MaestroTablaDAOImpl -- buscarMaestroTabla",e.getMessage());
            System.out.println("<<e.getMessage()>>"+e.getMessage());
        }
    LOG.info("Inicio -- MaestroTablaDAOImpl -- buscarMaestroTabla");
    return retornoListaMaestroTablaDTO;
}

It gives me the following exception: < > "AS" has been found in character 299, but was expected: [")", "*", "+", ",", "-", "/"]. " when analyzing JPQL "SELECT new MasterTable (mt.id, mt.domain, mt.description, mt.esEditable, mt.estado, mt.usuarioCreacion, mt.fechaCreacion, mt.terminalCreacion, mt.usuarioUpdate, mt.dateActualization, mt. terminalUpdate, (SELECT max (mc.id) from MasterColumn mc where mc.estado = 1 and mc.domain = mt.domain) AS numberColumns) FROM MasterTable mt WHERE mt.estado =: ORDER BY state mt.Description ASC ". Check the trace of the nested stack to get the initial analysis error.

    
asked by Luis Gustavo García Reyna 17.09.2018 в 21:23
source

0 answers