Hibernate. consulta c/ parâmetro acentuado nao retorna os objetos que deveria

A consulta não está devolvendo o resultado esperado.
Eu passo “João” como parâmetro e não está retornando os registros que deveria retornar.
O valor do parâmetro que está sendo passado é ‘JOÃO%’.

public static List<Cliente> getClientes(String nome){ if (nome != null && nome.trim() != ""){ Session session = HibernateUtil.getSession(); nome = nome.trim().toUpperCase()+'%'; try { List<Cliente> clientes = session.createQuery("from Cliente where upper(nome) like :nome order by nome") .setParameter("nome",nome) .list(); return clientes; } finally { session.close(); } } return null; }

Não sei muito bem qual eh o seu problema, aparentemente seu código tah certo, mas por que não tenta utilizar criteria na sua consulta, quem sabe resolva seu problema e ainda por cima de quebra, voce aprende uma parada bem legal do hibernate.
No seu caso ficaria assim a sua consulta utilizando Criteria

//Inicializa o objeto criteria
Criteria criteria = session.createCriteria(Cliente.class);

//Adiciona a restição like do nome na consulta    
criteria.add(Restrictions.like("nome", nome));

//ordena ascendente pela propriedade nome
criteria.addOrder(Order.asc("nome"));

//recebe a lista de clientes
List<Cliente> cliente = criteria.list();

Bem mais limpo não acha?

Abraços