Fork me on GitHub

oracle.sql.BLOB cannot be cast to oracle.sql.BLOB

 


 

问题发现点

在进行BLOB数据类型转化成BASE64类型时出现了此问题;

 

原因

接收到的数据实例是个包裹着java.sql.Blob外壳的Proxy类型的实例。因此,当我们想操作这个Blob数据时就需要针对这个被包装的Blob进行去壳

 

解决问题的代码

1 SerializableBlobProxy proxy = (SerializableBlobProxy )Proxy.getInvocationHandler(blob);  
2 java.sql.Blob realBlob = proxy.getWrappedBlob(); 

 

封装好的工具类

将上面的代码放入自己的代码中,稍微调整一下就可以了,下面的链接实我这边处理的整个代码块,有需要的可以看一下:

关于BLOB转为BASE64的详细工具类代码(可直接使用)

追加:下面这个工具类是我在使用 Mybatis 数据持久层框架时发现用上面的工具类报了个——代理问题,初步分析是因为 Mybatis 在数据处理时存在对代理方面的一些特殊操作,因此我又找到了另一种处理方式,工具类链接如下:

BLOB转BASE64—— 详细工具类(可直接使用、非代理方式)


 

-END>

posted @ 2020-05-15 11:03  90后程序猿  阅读(861)  评论(0)    收藏  举报
/* 看板娘 */