Tirando a parte do ***id***
, que acredito que está assim porque era para deixar em negrito, o seu método está correto.
Eu acredito que o problema está em passos anteriores.
Verifica se o id na classe de entidade ou até mesmo na tabela do banco de dados está como Int.
Porque se o dado estiver diferente, ele pode dar este erro que você mencionou;
Outra coisa é, verificar se no banco de dados, "id" não seja uma palavra reservada. Mas acredito que você esteja usando o MySql, então dá para remover esta possibilidade;
Uma outra coisa que me veio a mente, é a possibilidade do id estar vindo null. Então você pode fazer um debug ou um print do valor quando chega no método recuperarPeloId para dar uma verificada;
Ah! E tem mais uma possibilidade: o id do TModel pode estar diferente do entityType.
Eu aconselho você a colocar um id que exista no banco direto no código só pra testar mesmo e poder excluir as possibilidades. Se der certo, então a query está corretíssima e você já pode partir para as outras possíveis causas.