Hibernate ordenação com acentos  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
fabiophx
Java Ninja

Membro desde: 17/04/2006 14:05:56
Mensagens: 283
Localização: Montenegro-RS
Offline

Percebi q mesmo q o banco esteja com o encoding / charset correto para caracteres acentuados a ordenação não fica correta.

Ex.: Imaginem uma tabela com os registros: 'a', 'à' e 'b' se eu fizer:
select * from tabela order by campo
aparece na seguinte ordem: 'a', 'b' e 'à'.

Percebi isto no SQL Server e no PostGreSQL.
Vi q no PostGreSQL existe a função translate onde posso fazer o seguinte comando abaixo para obter o resultado certo:
select * from tabela order by translate(campo, 'âãá', 'aaa')

A pergunta é: existe uma forma prática via Hibernate para obter o resultado na ordem alfabética correta? Ou, existe mais alguma coisa a ser feita no banco de dados (qq um) para ter o resultado certo?

Obrigado.

Fabio da Silva
http://fabiophx.blogspot.com/
[WWW]
roger_rf
GUJ Master

Membro desde: 29/04/2009 07:40:19
Mensagens: 1091
Localização: Natal/RN
Offline

Até agora nunca consegui resolver esse problema através do BD nem do Hibernate, então faço o seguinte: leio os dados via Hibernate e em seguida os ordeno através de um Comparator. Esse Comparator, por sua vez, ordena String's através de um Collator. Recomendo checar o link abaixo:

http://www.guj.com.br/posts/list/93306.java

fabiophx
Java Ninja

Membro desde: 17/04/2006 14:05:56
Mensagens: 283
Localização: Montenegro-RS
Offline

Obrigado.
Recebi uma resposta tb sobre as variáveis LC_COLLATE e LC_CTYPE para o PostGreSQL no post: http://br.groups.yahoo.com/group/flex-brasil/message/23007, mas como respondi neste http://br.groups.yahoo.com/group/flex-brasil/message/23008 tinha q ter uma forma mais prática.
É um nonsense os bancos gravarem a acentuação corretamente mas não as ordenar de forma correta.

Fabio da Silva
http://fabiophx.blogspot.com/
[WWW]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

lembro uma vez, que o thingol, se não me engnao, me falou uma solução para compara desonciderando caracters acentuados, era uma solução com Locale algo assim, não lembro bem...

talvez ele possa ajudar...

Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
fabiophx
Java Ninja

Membro desde: 17/04/2006 14:05:56
Mensagens: 283
Localização: Montenegro-RS
Offline

Vlw, deve ser a url da resposta do roger_rf.


Fabio da Silva
http://fabiophx.blogspot.com/
[WWW]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team