I have problem retrieving a blob object from oracle DB to java API with jdbc. The problem is when I execute a Collable statement with a function from the db which return me a blob field this exception is thrown on the line :
tempBlob = (oracle.sql.BLOB)cstmt.getObject(1);
with this error message :
java.lang.ClassCastException: oracle.sql.BLOB cannot be cast to oracle.sql.BLOB.
The object which I get from the DB is a instance of oracle.sql.BLOB. The tempBlob
variable is a object oracle.sql.BLOB. Where is the problem?
Two oracle jar files may be in your classpath. Please remove one jar and deploy again.
Sometime one JAR is in the application classpath and another is in the application server classpath (eg.: in Tomcat $CATALINA_HOME/lib)
Dont Cast again like:
BLOB tempBlob = (oracle.sql.BLOB)cstmt.getObject(1);
Solution :
OutputStream outstrm =(rs.getBlob(1)).setBinaryStream(1L);
I got this error while generating a jasper report.
I replaced the class=oracle.jdbc.OracleBlob
with class=java.sql.Blob in the jrxml file of that report. It worked for me.
来源:https://stackoverflow.com/questions/11411306/java-lang-classcastexception-oracle-sql-blob-cannot-be-cast-to-oracle-sql-blob