| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2009 07:35:19
|
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/ |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2009 09:25:54
|
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
|
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2009 09:36:31
|
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/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2009 14:49:08
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
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/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2009 16:57:35
|
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/ |
|
|
 |
|
|