ClassCastException:com.microsoft.sqlserver.jdbc.SQLServerBlob cannot be cast to oracle.sql.BLOB

OI Galera GUJ

Seguinte estou desenvolvendo um programa que lê uma tabela do banco de Dados MSSQLServer 2008 que contem dois campos um do tipo VARCHAR e um outro do tipo IMAGE, depois estou gravando- os no Oracle 11g em uma tabela com um VARCHAR2 e BLOB.

Já tentei fazer cast normal (Blob), cast específico (java.sql.Blob), mas o erro persiste. Segue o código alguma outra idéia:

Erro completo:

    java.lang.ClassCastException: com.microsoft.sqlserver.jdbc.SQLServerBlob cannot be cast to oracle.sql.BLOB
    at oracle.jdbc.driver.OraclePreparedStatement.setBlob(OraclePreparedStatement.java:6156)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.setBlob(OraclePreparedStatementWrapper.java:125)
    at br.com.edocsystem.BancoDestino.Gravacao.grava(Gravacao.java:52)

Segue o método

[code] public void grava() throws Exception{

    Connection connection = getConexao();
     LeituraTabPDF tab_pdf = new  LeituraTabPDF();
     
     ResultSet id = tab_pdf.leiaID();
     ResultSet pdf = tab_pdf.leiaPDF();

     
     List<String> idB = new ArrayList<String>();
     List<java.sql.Blob> pdfB = new ArrayList<java.sql.Blob>();          

    for (int i = 1; id.next()&& pdf.next(); ++i)
    {
       idB.add(id.getString("id"));
       pdfB.add((java.sql.Blob)pdf.getBlob("pdf"));
    }

    Object[] testeb = idB.toArray();
    Object[] testea = pdfB.toArray();
    
     for(int i=0; i<idB.size();i++){
        String sql = "INSERT INTO ARQUIVOS(ID,ARQUIVO)VALUES(?,?)";
        PreparedStatement st = connection.prepareStatement(sql);
        st.setString(1, (String) testeb[i]);
        st.setBlob(2,((java.sql.Blob) testea[i]));
        
        
        st.executeQuery();   
     }
}

}[/code]

Já fiz testes trocando e alternando os .jars dos bancos, novamente sem sucesso

Galera esse é o único fórum no mundo com a solução.

Bem comecei a testar de diversas maneiras como resolver esse impasse até que cheguei na fórmula.

Segue se algum dia alguém precisar

import java.sql.*;
import br.com.edocsystem.BancoOrigem.*;
import java.util.List;
import java.util.ArrayList;
import java.sql.Blob;
import java.io.InputStream;

public class Gravacao {

    private Connection dbConnection;

    private Connection getConexao() throws Exception,ClassNotFoundException{
              Class.forName("oracle.jdbc.OracleDriver");
              return this.dbConnection = DriverManager.getConnection(String do banco);
    }

    public void grava() throws Exception{
      
        Connection connection = getConexao();
         LeituraTabPDF tab_pdf = new  LeituraTabPDF();
         
         ResultSet id = tab_pdf.leiaID();
         ResultSet pdf = tab_pdf.leiaPDF();


         for(int i=1; id.next() ;i++){
                  pdf.next();
            String sql = "INSERT INTO ARQUIVOS(ID,ARQUIVO)VALUES(?,?)";
            PreparedStatement st = connection.prepareStatement(sql);
            st.setString(1, id.getString("id"));
            st.setBlob(2, pdf.getBlob("arquivo").getBinaryStream());
            st.executeQuery();
            st.close();
            System.out.println(i);
       
             }
      }

}