@SuppressWarnings({"rawtypes", "unchecked"})
  public Collection pesquisar(Filtro filtro, int pageOffset, String pacoteNomeObjeto)
      throws ErroRepositorioException {

    Collection retorno = null;

    Session session = HibernateUtil.getSession();

    try {

      retorno =
          new ArrayList(
              new CopyOnWriteArraySet(
                  GeradorHQLCondicional.gerarCondicionalQuery(
                          filtro, "objeto", "from " + pacoteNomeObjeto + " as objeto", session)
                      .setFirstResult(10 * pageOffset)
                      .setMaxResults(10)
                      .list()));

      if (!filtro.getColecaoCaminhosParaCarregamentoEntidades().isEmpty()) {
        PersistenciaUtil.processaObjetosParaCarregamento(
            filtro.getColecaoCaminhosParaCarregamentoEntidades(), retorno);
      }
      if (filtro.isInitializeLazy()) {
        inicializarPropriedadesLazies(retorno);
      }
    } catch (HibernateException e) {
      throw new ErroRepositorioException(e, "Erro no Hibernate");
    } finally {
      HibernateUtil.closeSession(session);
    }
    return retorno;
  }
  @SuppressWarnings({"rawtypes", "unchecked"})
  public Collection pesquisar(Collection ids, Filtro filtro, String pacoteNomeObjeto)
      throws ErroRepositorioException {
    Collection retorno = null;
    Session session = HibernateUtil.getSession();

    try {
      retorno =
          new ArrayList(
              new CopyOnWriteArraySet(
                  session
                      .createQuery("from " + pacoteNomeObjeto + " where id IN (:ids)")
                      .setParameterList("ids", ids)
                      .list()));

      if (!filtro.getColecaoCaminhosParaCarregamentoEntidades().isEmpty()) {
        PersistenciaUtil.processaObjetosParaCarregamento(
            filtro.getColecaoCaminhosParaCarregamentoEntidades(), retorno);
      }
      if (filtro.isInitializeLazy()) {
        inicializarPropriedadesLazies(retorno);
      }

    } catch (HibernateException e) {
      throw new ErroRepositorioException(e, "Erro no Hibernate");
    } finally {
      HibernateUtil.closeSession(session);
    }
    return retorno;
  }