Eu utilizava o hibernate+firebird, agora estou migrando para o oracle 10g EX.
No firebird eu conseguia manipular normalmente os campos blob, porém, no oracle não estou conseguindo. Vi na net em posts antigos (06/07) que isso era um problema do oracle.
Os campos BLOB do Firebird são armazenados como texto (funciona perfeitamente), já no Oracle são bytes[].
Ocorre que quando utilizo o Oracle nenhuma informação é exibida no JSF. Tentei anotar a propriedade com @Lob, nesse caso apareceram caracteres estranhos.
Esse é o problema!
Vi na internet em posts antigos que havia um problema no driver do oracle, mas são posts de 2006/2007.
Gostaria de saber se isso ainda não foi corrigido ou se tem algum procedimento que eu devo fazer.
Se a intenção é armazenar somente texto, utilize CLOB ao invés de BLOB.
A diferença entre os subtipos BLOB, CLOB e NCLOB é que o tipo BLOB guarda informação do tipo RAW, já os tipos CLOB e NCLOB guardam caracteres.
RAW
O tipo RAW guarda dados binários ou strings de bytes como caracteres gráficos ou imagens digitalizadas.
O tipo RAW requer um parâmetro que especifica o seu tamanho máximo.
PL/SQL não interpreta tipos RAW. Se um tipo RAW for transmitido de um sistema para outro, não haverá conversão de tipos de caracteres.
O tamanho máximo permitido para o tipo é de 32767 bytes. Entretanto uma coluna do tipo RAW só pode guardar até 2000 bytes.