JAVA + HIBERNATE - String cannot be cast to Long

Estou com uma dúvida estou criando uma busca para retornar uma lista de codigo(Long),
Gostaria de saber como criar essa lista usando um atributo do tipo Long!

Error:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long

DAO:

public List buscarCampo(Class objeto, String campo, Object valor) {
    getSessao();
    Transaction transacao = sessao.beginTransaction();
    try {
        Criteria criteria = sessao.createCriteria(objeto);
        criteria.add(Restrictions.ilike(campo, valor.toString(), MatchMode.ANYWHERE));
        List retorno = criteria.list();
        transacao.commit();
        return retorno;
    } catch (Exception ex) {
        transacao.rollback();
        ex.printStackTrace();
        return null;
    }
}

O erro é sobre conversão, já tentou isso?

Long.parseLong(valor.toString())
1 curtida