Estou com problemas em buscas feitas com critéria onde um ou mais parametros da busca tenham acento. Estou usando banco de dados PostgreSQL é meu banco tem encode UTF-8. Todos os demais componentes da minha aplicação também usam esse encode.
Quando faço a busca como na Listagem1 o SGDB retorna exatamente 70 registros, porém quando faço a busca usando critéria conforme Listagem2 o hibernate não retorna nenhum registro. Engraçado que o parametro não está com aqueles problemas tipicos de charset (reparem o out.print do parametro).
Alguem tem alguma “Luz” para esse problema? Obrigado!
tive problemas com utf-8 quando estava manipulando arquivos xml… tive q mudar para “ISO-8859-1”
tRuNkSnEt
Infelizmente o MatchMode não resolveu meu problema, porém eu descobri uma outra coisa interessante. Veja só, se eu usar apenas LIKE em vez de ILIKE ele retorna os resultados corretamente, porém pode ocorrer de o usuário editar um mesmo parametro em minusculo e maiusculo dai o LIKE nao resolveria meu problema. No minimo estranho não é? Alguem tem mais alguma opiniao? Situação nova abaixo:
SQLQuerysql=HibernateUtil.getSession().createSQLQuery("SELECT * FROM MATERIA WHERE TITULO LIKE '%ROMÁRIO%'");Criteriac1=HibernateUtil.getSession().createCriteria(Materia.class).add(Restrictions.ilike("titulo","%ROMÁRIO%",MatchMode.ANYWHERE));Criteriac2=HibernateUtil.getSession().createCriteria(Materia.class).add(Expression.like("titulo","%ROMÁRIO%",MatchMode.ANYWHERE));System.out.println("sql: (sqlQuery): "+sql.list().size());System.out.println("c1: (ilike) : "+c1.list().size());System.out.println("c2: (like) : "+c2.list().size());/* OUTPUTsql: (sqlQuery): 72 Registrosc1: (ilike) : 0 Registrosc2: (like) : 72 Registros*/
L
lauronolasco
so uma dica… q descobri a poucos minutos…
o Expression está depreciado…
use somente o Restrictions
tRuNkSnEt
lauronolasco:
so uma dica… q descobri a poucos minutos…
o Expression está depreciado…
use somente o Restrictions
Pois é, eu tentei usar os dois mas mesmo assim continua o problema. A nem, será bug no Hibernate? Isso nao pode ser problema de charSet já que LIKE funciona mas ILIKE não funciona. Alias, já é muito estranho Like funcionar mas ILIKE não … Alguem tem alguma ideia?