通过jndi连接池,java对oracle的blob字段取出时会发生"
java.lang.ClassCastException"错误,有什么解决方法嘛?
我在使用jdbc对oracle的blob地段插入时发生"java.lang.
ClassCastException"
具体代码如下,先插入一个空的blob字段,然后对该字段更新.
该代码在使用jdbc:oracle:thin@ 方式取连接时就没问题,在用weblogic连接池就会出错
Java code
PreparedStatement pstmt = conn.prepareStatement("insert into test(id,content) values(?,empty_blob())");
pstmt.setString(1,"1");
pstmt.executeUpdate();
pstmt.close();
pstmt = conn.prepareStatement("select content from test where id= ? for update");
pstmt.setString(1,"1");
ResultSet rset = pstmt.executeQuery();
if (rset.next())
blob = (BLOB) rset.getBlob(1); //这一步会出错
blob = (BLOB) rset.getBlob(1); //这一步报错,java.lang.ClassCastException: weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB
google了一下,发现好像通过weblogic连接池取出的连接取出的blob对象是weblogic封装过的OracleThinBlob,而不是oracle.sql.BLOB,所以转换出错了.
如果一定要使用weblogic连接池,我的weblogic用的是8.14 .有什么解决方法没?
ps:最近oracle收购bea后,bea的论坛怎么上不了了.
------解决方案--------------------
将blob = (BLOB) rset.getBlob(1)改成
OracleThinBlob blob = (weblogic.jdbc.vendor.oracle.OracleThinBlob) rs.getBlob(1);
------解决方案--------------------