java.lang.ClassCastException: oracle.sql.CLOB no se puede convertir a oracle.sql.CLOB
hibernate jboss (2)
Arreglé el problema Publicando esta respuesta, esperando que pueda ser útil para alguien.
Cuando estaba verificando el tipo de instancia del CLOB recuperado por la consulta, apareció como oracle.sql.CLOB. Así que asumí que debe haber sido una versión no coincidente de ojdbc.jar. Revisé mi proyecto un billón de veces para copias múltiples de ojdb.jar. No hubo ninguno
Finalmente resultó ser un choque entre hibernate y ojdbc. Cambié la referencia a java.sql.Clob. Hibernate usa java.sql.Clob. Esto resolvió el problema.
Hace poco actualicé una aplicación para ejecutarla con JAVA 7 y JBoss 7.1.1. Esta aplicación se desarrolló originalmente en JAVA 5 y Jboss 4.2.2. Esta aplicación utiliza hibernate 3 para la persistencia.
En la nueva plataforma, la aplicación está fallando cuando hay un intento de INSERTAR en una tabla con campos CLOB con el error anterior. Estoy usando ojdbc14.jar (base de datos del servidor Oracle 10.2.0.3)
Estas son cosas que he verificado en la configuración de jboss 7.1.1:
- Creación del módulo correcto para Oracle. Se aseguró de que ojdbc14.jar existe en el directorio de módulos correcto
- Se aseguró de que no haya otro ojdbc.jar en conflicto existente en ningún otro lugar en el directorio jboss
- Aseguró que la aplicación no hace referencia a un ojdbc.jar diferente.
Cualquier idea sería útil. Estoy tirando de mi cabello tratando de resolver este problema durante casi una semana.
Muchas gracias
En mi situación no estoy usando Hibernate, pero uso Jboss como contenedor y tuve que eliminar el módulo de Oracle de jboss-deployment-structure.xml, así que ya no podía usar el oracle.sql.CLOB y tenía el mismo problema.
java.lang.ClassCastException: oracle.sql.CLOB cannot be cast to oracle.sql.CLOB
al final utilicé
java.sql.Clob clobValue = (java.sql.Clob)result.getClob("EMIRFILE");
y funciona correctamente Espero que esto ayude a alguien.