Descobri o erro, eu estava criando 2 sessoes no meu select. Mas não entendi muito. Veja que eu crio o criteria em outra sessao, em HibernateUtil.getSession().createCriteria(Cliente.class).
Nesse caso, como nao ficou nenhuma referência para a sessao do createCriteria, as sessoes nao seria destruídas pelo GC ?
Pois, ele retorna a coleção e pronto. Não fica mais referências para as seções.