Olá amigos.
Estou com o seguinte problema.
Eu preciso alterar uma pesquisa no sistema em que estou trabalhando. Na verdade eu preciso adicionar mais 1 filtro somente na query. O problema é que essas querys estão em um arquivo XML. Eu já achei a query porém não estou sabendo como adicionar o filtro.
Esse é o codigo que CHAMA essa query.
[code]public Collection pesquisarDocumentosExtraJudiciais(Documento documento)
throws ObjectNotFoundException {
FilterMapPath mapPath = new FilterMapPath(documento);
mapPath.add("auto.id");
mapPath.add("auto.sequencial");
mapPath.add("auto.ano");
//37138 - Inicio
mapPath.add("auto.digito");
//37138 - Fim
mapPath.add("id");
mapPath.add("numeroOrigem");
mapPath.add("numeroProtocolo");
mapPath.add("dataDistribuicaoIni");
mapPath.add("dataDistribuicaoFim");
mapPath.add("dataChegadaIni");
mapPath.add("dataChegadaFim");
mapPath.add("dataFatoIni");
mapPath.add("dataFatoFim");
mapPath.add("modalidade");
//36646 - Inicio
mapPath.add("area");
//36646 - Fim
mapPath.add("situacaoDoc");
mapPath.add("orgaoMP");
mapPath.add("orgaoEncaminhador");
mapPath.add("orgaoOrigem");
mapPath.add("grupoOficioOrigem");
mapPath.add("designacaoOrigem");
mapPath.add("pessoaOrigem");
mapPath.add("caso");
mapPath.add("orgao");
mapPath.add("uf");
mapPath.add("localidade");
mapPath.add("bairro");
mapPath.add("observacao");
mapPath.add("pessoas");
mapPath.add("nomeMae");
mapPath.add("identificador.tipo");
mapPath.add("identificador.numeroIdentificador");
mapPath.add("tipificacao");
mapPath.add("tipoPessoaInteressada");
mapPath.add("outroNome");
mapPath.add("anexo.numeroOriginal");
mapPath.add("anexo.tipoAnexo");
mapPath.add("anexo.numeroProtocolo");
mapPath.add("anexo.origemAnexo");
mapPath.add("anexo.grupoOficioOrigem");
mapPath.add("anexo.pessoaOrigem");
mapPath.add("anexo.designacaoOrigem");
mapPath.add("usuario.grupoOficioAtual");
mapPath.add("usuario.servidor");
mapPath.add("dataAnexoIni");
mapPath.add("dataAnexoFim");
mapPath.add("prazo");
mapPath.add("orgaoDestino");
mapPath.add("grupoOficioDestino");
mapPath.add("designacaoDestino");
mapPath.add("pessoaDestino");
// new pessoas, documentos e relatos (exige FiltroDocumento)
mapPath.add("membro");
mapPath.add("dataAtuacaoIni");
mapPath.add("dataAtuacaoFim");
mapPath.add("classificacaoLocal");
mapPath.add("circunstancia");
mapPath.add("tipoLocal");
mapPath.add("dataFato");
mapPath.add("horaFato");
mapPath.add("turnoFato");
mapPath.add("tentativa");
mapPath.add("assunto");
mapPath.add("materia");
mapPath.add("outroNome");
mapPath.add("pessoaInteressadaArma.tipoArma");
mapPath.add("pessoaInteressadaArma.numeroRegistro");
mapPath.add("comarca");
mapPath.add("grupoOficioAtuacao");
mapPath.add("guiaAno");
mapPath.add("guiaSequencial");
mapPath.add("guiaDataHoraCriacao");
mapPath.add("guiaDataHoraCriacaoFinal");
Map filter = mapPath.getMapFilter();
if (filter.get("guiaAno") != null
|| filter.get("guiaSequencial") != null
|| filter.get("guiaDataHoraCriacao") != null
|| filter.get("guiaDataHoraCriacaoFinal") != null) {
mapPath.add("statusGuia", StatusGuia.efetivada);
Collection statusDocumento = new ArrayList();
statusDocumento.add(StatusDocumento.efetivado);
statusDocumento.add(StatusDocumento.aguardandoRetorno);
statusDocumento
.add(StatusDocumento.aguardandoRetornoFuncaoDocumento);
mapPath.add("statusDocumento", statusDocumento);
}
int qtRegistrosPagina = 0;
if (documento instanceof FiltroDocumento) {
FiltroDocumento filtroDocumento = (FiltroDocumento) documento;
qtRegistrosPagina = filtroDocumento.getQtRegistrosPagina();
}
//CHAMADA DA FUNÇÃO QUE FAZ A PESQUISA
return persistenceManager.find("pesquisa.documento.extrajudicial", mapPath, true, 0, qtRegistrosPagina);
}[/code]
E essa é a query
[code]
<![CDATA[
select distinct doc from DocumentoExtraJudicial as doc left outer join doc.documentoDesignacoes as docDesig left outer join docDesig.servidorDesignacao as serDesig left outer join doc.compartilhamentos as comp
[left join doc.pessoasInteressadas pessoasInteressadas]
[left join doc.distribuicoes distribuicoes]
[left join pessoasInteressadas.composicoesTipificacoes composicoesTipificacoes]
[left join composicoesTipificacoes.tipificacoes tipificacoes]
[left join pessoasInteressadas.armas armas]
[left join pessoasInteressadas.pessoa.identificadores identificadores]
[left join pessoasInteressadas.pessoa.outrosNomes outrosNomes]
[left join doc.anexos anexos]
[left join doc.documentoDesignacoes documentoDesignacoes]
[left join doc.materias materias]
[left join doc.assuntos assuntos]
[left join doc.vinculosDocumentoGuia vinculosDocumentoGuia]
where [( (serDesig.servidor.id = :usuario_servidor)
or (doc.grupoOficioAtuacao.id = :usuario_grupoOficioAtual)
or (comp.grupoPermitido.id=:usuario_grupoOficioAtual)
)] and
doc.tipoDocumento.id = 1 and
[doc.auto.id = :auto_id] and
[doc.auto.sequencial = :auto_sequencial] and
[doc.auto.ano = :auto_ano] and
[doc.auto.digito = :auto_digito] and
[doc.id = :id] and
[doc.numeroOrigem = :numeroOrigem] and
[doc.numeroProtocolo = :numeroProtocolo] and
[(distribuicoes.dataDistribuicao >= :dataDistribuicaoIni)] and
[(distribuicoes.dataDistribuicao <= :dataDistribuicaoFim)] and
[doc.dataChegada >= :dataChegadaIni] and
[doc.dataChegada <= :dataChegadaFim] and
[doc.dataFato >= :dataFatoIni] and
[doc.dataFato <= :dataFatoFim] and
[doc.modalidade.id = :modalidade] and
[doc.area.id = :area] and
[doc.situacaoDoc.id = :situacaoDoc] and
[doc.orgaoMP.id = :orgaoMP] and
[doc.orgaoEncaminhador.id = :orgaoEncaminhador] and
[doc.orgaoOrigem.id = :orgaoOrigem] and
[doc.grupoOficioOrigem.id = :grupoOficioOrigem] and
[doc.designacaoOrigem.id = :designacaoOrigem] and
[doc.pessoaOrigem.id = :pessoaOrigem] and
[doc.caso.id = :caso] and
[doc.orgao.id = :orgao] and
[doc.uf.id= :uf] and
[doc.localidade.id = :localidade] and
[doc.bairro.id = :bairro] and
[(pessoasInteressadas.pessoa.id in (select psn from PessoaNatural as psn where psn.nomeMae like :nomeMae) and pessoasInteressadas.ativo = 'S')] and
[(pessoasInteressadas.pessoa in (:pessoas) and pessoasInteressadas.ativo = 'S')] and
[(identificadores.tipo.id = :tipoIdentificador and pessoasInteressadas.ativo = 'S')] and
[(identificadores.tipo.id = :identificador_tipo and pessoasInteressadas.ativo = 'S')] and
[(identificadores.numeroIdentificador = :identificador_numeroIdentificador and pessoasInteressadas.ativo = 'S')] and
[(pessoasInteressadas.tipoPessoaInteressada.id = :tipoPessoaInteressada and pessoasInteressadas.ativo = 'S')] and
[(tipificacoes.id = :tipificacao and pessoasInteressadas.ativo = 'S')] and
[(outrosNomes.id = :outroNome and pessoasInteressadas.ativo = 'S')] and
[(composicoesTipificacoes.tentativa = :tentativa and pessoasInteressadas.ativo = 'S')] and
[(armas.tipoArma.id = :pessoaInteressadaArma_tipoArma and pessoasInteressadas.ativo = 'S')] and
[(armas.numeroRegistro = :pessoaInteressadaArma_numeroRegistro and pessoasInteressadas.ativo = 'S')] and
[doc.observacao like :observacao] and
[anexos.numeroOriginal like :anexo_numeroOriginal] and
[anexos.tipoAnexo.id = :anexo_tipoAnexo] and
[anexos.numeroProtocolo) = :anexo_numeroProtocolo] and
[anexos.origemAnexo.id = :anexo_origemAnexo] and
[anexos.grupoOficioOrigem.id = :anexo_grupoOficioOrigem] and
[anexos.pessoaOrigem.id = :anexo_pessoaOrigem] and
[anexos.designacaoOrigem.id = :anexo_designacaoOrigem] and
[anexos.data >= :dataAnexoIni] and
[anexos.data <= :dataAnexoFim] and
//EU PRECISO ADICIONAR ESSA LINHA OU ALGO DO TIPO. DESSE JEITO NÃO DA CERTO
//ANEXOS é um collection que está dentro de DOCUMENTO
anexos.flgExcluido != 'S' and
//
[doc.orgaoDestino.id = :orgaoDestino] and
[doc.pessoaDestino.id = :pessoaDestino] and
[doc.grupoOficioDestino.id = :grupoOficioDestino] and
[doc.designacaoDestino.id = :designacaoDestino] and
[documentoDesignacoes.servidorDesignacao.servidor.id = :membro] and
[doc.dataAtuacao >= :dataAtuacaoIni] and
[doc.dataAtuacao <= :dataAtuacaoFim] and
[doc.circunstancia.id = :circunstancia] and
[doc.classificacaoLocal.id = :classificacaoLocal] and
[doc.tipoLocal.id = :tipoLocal] and
[doc.dataFato = :dataFato] and
[doc.horaFato = :horaFato] and
[doc.turnoFato = :turnoFato] and
[materias.id = :materia] and
[assuntos.id = :assunto] and
[doc.comarca.id = :comarca] and
[doc.grupoOficioAtuacao.id = :grupoOficioAtuacao] and
[vinculosDocumentoGuia.guia.ano = :guiaAno] and
[vinculosDocumentoGuia.guia.sequencial = :guiaSequencial] and
[vinculosDocumentoGuia.guia.dataHoraCriacao >= :guiaDataHoraCriacao] and
[vinculosDocumentoGuia.guia.dataHoraCriacao <= :guiaDataHoraCriacaoFinal] and
[vinculosDocumentoGuia.prazoRetorno = :prazo] and
[vinculosDocumentoGuia.statusDocumento in (:statusDocumento)] and
[vinculosDocumentoGuia.guia.statusGuia.id = :statusGuia]
]]>
</statement>
<parameter name="observacao" value="concat('',observacao,'%')" />
<parameter name="nomeMae" value="concat('',nomeMae,'%')" />
<order-by name="por ordem">
<statement>order by doc.id</statement>
</order-by>
</query>[/code]
Desde já agradeço.
Bom Dia.