Fala, galera!
Estou com o seguinte problema:
Eu tenho uma combo de cidades que deve ser apresentada ordenada alfabeticamente. Porém, cidades que possuem acentuação no nome não estão sendo ordenadas corretamente. Ex.:
- ABAETÉ
- ALFENAS
- BELO HORIZONTE
- ROMARIA
- VIÇOSA
- ÁGUA COMPRIDA
- ÁGUAS FORMOSAS
O banco de dados da aplicação é o PostgreSQL 8.1, e se eu rodar o SQL abaixo, no Postgre, funciona.
select * from cidade c
where c.id_uf = 'MG' and c.ativa=true
order by (translate( upper(c.dsc_cidade), text 'ÁÉÍÓÚÀÈÌÒÙÃÕÂÊÎÔÛÄËÏÖÜÇÑ', text 'AEIOUAEIOUAOAEIOUAEIOUCN'))
Porém, se eu tentar fazer coisa parecida em HQL como:
String queryString = "from Cidade c where c.uf.id = ? and c.situacaoAtiva=true " +
"order by (translate( upper(c.nome), text 'ÁÉÍÓÚÀÈÌÒÙÃÕÂÊÎÔÛÄËÏÖÜÇÑ', text 'AEIOUAEIOUAOAEIOUAEIOUCN'))";
ControleTransacaoHibernate controleTransacao = new ControleTransacaoHibernate(true);
Session session = controleTransacao.getSessao();
Query query = session.createQuery(queryString);
query.setParameter(0, _uf.getId());
List<Cidade> cidades = query.list();
controleTransacao.commit();
return cidades;
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: 'ÁÉÍÓÚÀÈÌÒÙÃÕÂÊÎÔÛÄËÏÖÜÇÑ' near line 1, column 130 [Cidade c where c.uf.id = ? and c.situacaoAtiva=true order by (translate( upper(c.nome), text 'ÁÉÍÓÚÀÈÌÒÙÃÕÂÊÎÔÛÄËÏÖÜÇÑ', text 'AEIOUAEIOUAOAEIOUAEIOUCN'))]
Já me falaram pra usar SQL puro, mas nem tentei. Pois eu teria que mexer em todas as consultas da aplicação que também possuem este mesmo problema.
Alguém teria alguma solução para isso?
Valeu!!!