/**
  * Método que executa um select com base em um objeto Select informado
  * @param Select $select A consulta a ser realizada
  * @return ResultSetHydrator Um objetos contendo a resposta da interação
  */
 public function selectObj(Select $select)
 {
     if (!$select->tabelaIsset()) {
         $select->from($this->tabela);
     }
     //Executando a query e definindo os databind
     $prepare = $this->pdo->prepare($select);
     //Executando a validação do PDO
     foreach ($select->getWhere()->getColunas() as $coluna => $valor) {
         if (!isset($this->colunas[$coluna])) {
             //Este trecho deve ser reavaliado pois impede a busca usando como base
             //colunas de tabelas referenciadas por inner
             throw new SqlException("Uma das colunas informadas não é válida(select - {$coluna})", 10);
         }
         $prepare->bindValue(":{$coluna}", $valor, $this->colunas[$coluna]->getTipo());
     }
     //Executando de fato a consulta
     if (!$prepare->execute()) {
         throw new SqlException("Ocorreu um erro ao tentar executar a consulta");
     }
     //Retorno da consulta
     return new ResultSetHydrator($this->objeto, $prepare);
 }