public void searchSolicitacoes() {
    facesContext = FacesContext.getCurrentInstance();

    ArrayList<String> caminhos = new ArrayList<>();
    ArrayList<String> colunas = new ArrayList<>();
    ArrayList<String> propertyName = new ArrayList<>();
    ArrayList<Object> listObjetos = new ArrayList<>();

    caminhos.add("solicitacoes.solicitacao");
    colunas.add("solicitacao");

    try {
      if (!(solicitacoes.getSolExa_Pedido().equals(0))) {
        listaSolicitacoesExames = genericDAO.searchObject(SolicitacoesExames.class, "solicitacoes",
                null, null,
                new String[]{"solExa_Pedido"}, new Object[]{solicitacoes.getSolExa_Pedido()});
      } else {
        if (!(nomeProfissional.getCli_nome().isEmpty())) {
          caminhos.add("solicitacao.profissionalPedido");
          colunas.add("profissionalPedido");
          caminhos.add("profissionalPedido.cliente");
          colunas.add("cliente");

          propertyName.add("cliente.cli_nome");
          listObjetos.add(nomeProfissional.getCli_nome());
        }
        if (!(procedimentos.getDes_codigoProcedimento().isEmpty())) {
          caminhos.add("solicitacoes.descricaoExames");
          colunas.add("descricaoExames");

          propertyName.add("descricaoExames.des_codigoProcedimento");
          listObjetos.add(procedimentos.getDes_codigoProcedimento());
        }

        if (!(cliente.getCli_CNS().isEmpty())) {
          caminhos.add("solicitacao.cliente");
          colunas.add("cliente");

          propertyName.add("cliente.cli_CNS");
          listObjetos.add(cliente.getCli_CNS());
        }
        String[] arrayCaminhos = caminhos.toArray(new String[caminhos.size()]);
        String[] arrayColunas = colunas.toArray(new String[colunas.size()]);
        String[] arrayPropertyName = propertyName.toArray(new String[propertyName.size()]);
        Object[] arrayObjects = listObjetos.toArray(new Object[listObjetos.size()]);

        listaSolicitacoesExames = genericDAO.searchObject(SolicitacoesExames.class, "solicitacoes",
                arrayCaminhos, arrayColunas, arrayPropertyName, arrayObjects);
      }

    } catch (Exception ex) {
      Logger.getLogger(BuscarSolicitacaoMB.class.getName()).log(Level.SEVERE, null, ex);
    }

  }