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

1 resposta
vitaaoo

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.

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);

	}
E essa é a query
<query name="pesquisa.documento.extrajudicial">
          <statement>
          	<![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>

Desde já agradeço.

Bom Dia.

1 Resposta

vitaaoo

Alguemmm plzzzzz ?

Criado 23 de janeiro de 2013
Ultima resposta 23 de jan. de 2013
Respostas 1
Participantes 1