[RESOLVIDO] Fazer a conversão de atributo do tipo VARCHAR2, no banco, para INTEIRO usando HQL

2 respostas
R

Pessoal, boa tarde!
Preciso fazer uma comparação, usando o >=, entre dois atributos, só que no banco um deles está como VARCHAR2 então quando tento utilizar a query ocorre um erro.

Minha Query

FROM Tabela tb WHERE (atributo1 >= ? AND atributo1 <= ?) OR (atributo2 >= ? AND atributo2 <= ?))Gostaria de saber como faço para converter, na própria query o atributo1 que é do tipo VARCHAR2.

Erro Ocorrido

Caused by: org.dom4j.DocumentException: Error on line 720 of document : The content of elements must consist of well-formed character data or markup. Nested exception: The content of elements must consist of well-formed character data or markup. at org.dom4j.io.SAXReader.read(SAXReader.java:482) at org.hibernate.cfg.AnnotationConfiguration.addInputStream(AnnotationConfiguration.java:773)
Obs.: Já tentei utilizar a solução encontrada no tópico seguinte mas não funcionou: http://www.guj.com.br/java/89933-converter-tipo-de-dados-em-hql-hibernate

Obrigado.

2 Respostas

davidbuzatto

Use a função cast.cast(atributo as int)
Ficaria algo como:FROM Tabela tb WHERE (cast(atributo1 as int) >= ? AND cast(atributo1 as int) <= ?) OR (atributo2 >= ? AND atributo2 <= ?))
Só vai funcionar se seu SGBD tiver essa função implementada.

R

davidbuzatto,
Obrigado pela resposta, já consegui resolver o problema. A função “cast” funcionou corretamente o erro na verdade era que eu estava usando a sintaxe da forma errada. Como a query foi escrita em um arquivo XML, foi mais difícil identificar o erro.

Valeu pela ajuda, um abraço.

Criado 16 de outubro de 2012
Ultima resposta 17 de out. de 2012
Respostas 2
Participantes 2