我在使用jdbc从oracle DB检索blob对象到java API时遇到问题。 问题是当我使用db中的函数执行Collable语句时返回一个blob字段,这个异常被抛出就行了:
tempBlob = (oracle.sql.BLOB)cstmt.getObject(1);
出现此错误消息:
java.lang.ClassCastException: oracle.sql.BLOB cannot be cast to oracle.sql.BLOB.
我从数据库获取的对象是oracle.sql.BLOB
的实例。 tempBlob
变量是一个对象oracle.sql.BLOB
。问题在哪里?
答案 0 :(得分:4)
两个oracle jar文件可能在您的类路径中。请删除一个jar并重新部署。
答案 1 :(得分:2)
有时一个JAR在应用程序类路径中,另一个在应用程序服务器类路径中(例如:在Tomcat $CATALINA_HOME/lib
中)
答案 2 :(得分:0)
不要再次投射:
BLOB tempBlob = (oracle.sql.BLOB)cstmt.getObject(1);
解决方案:
OutputStream outstrm =(rs.getBlob(1)).setBinaryStream(1L);
答案 3 :(得分:0)
生成碧玉报告时出现此错误。
我替换了class=oracle.jdbc.OracleBlob
与该报告的jrxml文件中的class=java.sql.Blob
一起使用。它对我有用。