[Problema] Hibernate + QueryHql.Xml + Consulta Banco de Dados

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.

Alguemmm plzzzzz ?