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>

浙公网安备 33010602011771号