Olá pessoal, estou tentando fazer uma consulta no banco de dados porém o java me retorna um erro de sintaxe da query:
16:48:40,302 ERROR [org.jboss.as.ejb3.invocation] (http-localhost/127.0.0.1:8080-4) JBAS014134: EJB Invocation failed on component EProtocoloDAO for method public java.util.List br.gov.rs.tce.eprotocolo.dao.EProtocoloDAO.findByEProtocoloPesquisaTO(java.lang.String,java.util.Date,java.util.Date,java.lang.String,int,int): java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: PROTOCOLOS near line 1, column 94 [SELECT P.NOME_SERVIDOR, P.CPF_SERVIDOR, P.DT_CRIACAO, S.DS_SITUACAOFROM PROTOCOLOS P, OBJETOS O, TIPOS_OBJETO TPO, TIPOS_PROTOCOLO TP, SITUACOES SWHERE O.ID_OBJETO = P.ID_OBJETOAND O.ID_TIPO = TPO.ID_TIPOAND P.ID_TIPO = TP.ID_TIPOAND O.ID_SITUACAO = S.ID_SITUACAOAND ((:id_situacao IS NULL AND O.ID_SITUACAO = 9 ) OR O.ID_SITUACAO = :id_situacao)AND (:nome_interessado IS NULL OR P.NOME_SERVIDOR LIKE '%:nome_interessado%')AND (:cpf_interessado IS NULL OR P.CPF_SERVIDOR LIKE '%:cpf_interessado%')AND P.DT_CRIACAO BETWEEN :dt_p_inicial AND :dt_p_final]
Query:
StringBuilder sql = new StringBuilder();
sql.append("SELECT P.NOME_SERVIDOR,");
sql.append(" P.CPF_SERVIDOR,");
sql.append(" P.DT_CRIACAO,");
sql.append(" S.DS_SITUACAO");
sql.append("FROM PROTOCOLOS P,");
sql.append(" OBJETOS O,");
sql.append(" TIPOS_OBJETO TPO,");
sql.append(" TIPOS_PROTOCOLO TP,");
sql.append(" SITUACOES S");
sql.append("WHERE O.ID_OBJETO = P.ID_OBJETO");
sql.append("AND O.ID_TIPO = TPO.ID_TIPO");
sql.append("AND P.ID_TIPO = TP.ID_TIPO");
sql.append("AND O.ID_SITUACAO = S.ID_SITUACAO");
sql.append("AND ((:id_situacao IS NULL AND O.ID_SITUACAO = 9 ) OR O.ID_SITUACAO = :id_situacao)");
sql.append("AND (:nome_interessado IS NULL OR P.NOME_SERVIDOR LIKE '%:nome_interessado%')");
sql.append("AND (:cpf_interessado IS NULL OR P.CPF_SERVIDOR LIKE '%:cpf_interessado%')");
sql.append("AND P.DT_CRIACAO BETWEEN :dt_p_inicial AND :dt_p_final");
Query query = em.createQuery(sql.toString(), EProtocolo.class)
.setParameter("id_situacao", idSituacao)
.setParameter("nome_interessado", nomeInteressado)
.setParameter("cpf_interessado", cpfInteressado)
.setParameter("dt_p_inicial", dtProtocolacaoInicial)
.setParameter("dt_p_final", dtProtocolacaoFinal);
return query.getResultList();