Hibernate操作Blob/Clob时,发生cannot be cast to oracle.sql.BLOB错误分析
2016-08-19 14:37
387 查看
由Hibernate返回的Blob对象实际上是代理类SerializableBlobProxy的实例,提供了java.sql.Blob接口定义的方法(实际上是通过反射的方式),表现得像是个实现java.sql.Blob接口的对象(只是貌似),但实际上是个Proxy类型的实例,因此不能把这个实例转化成oracle.sql.BLOB类型。会发生类型转换异常(java.lang.ClassCastException),提示信息为cannot
be cast to oracle.sql.BLOB
当用System.out.println(blob)输出信息的时候,显示的是oracle.sql.BLOB@10fba68,很具迷惑性。但使用System.out.println(blob.getClass().getName())输出信息的时候,显示的是$Proxy6,这显示了真实的情况,也就是说显示了这个实例的真实面目。
解决方法很简单如下:
SerializableBlobProxy proxy = (SerializableBlobProxy )Proxy.getInvocationHandler(blob);
java.sql.Blob realBlob = proxy.getWrappedBlob(); Proxy为java.lang.reflect中的。
be cast to oracle.sql.BLOB
当用System.out.println(blob)输出信息的时候,显示的是oracle.sql.BLOB@10fba68,很具迷惑性。但使用System.out.println(blob.getClass().getName())输出信息的时候,显示的是$Proxy6,这显示了真实的情况,也就是说显示了这个实例的真实面目。
解决方法很简单如下:
SerializableBlobProxy proxy = (SerializableBlobProxy )Proxy.getInvocationHandler(blob);
java.sql.Blob realBlob = proxy.getWrappedBlob(); Proxy为java.lang.reflect中的。
相关文章推荐
- Hibernate操作Blob/Clob时,发生cannot be cast to oracle.sql.BLOB错误分析
- Hibernate操作Blob/Clob时,发生ClassCastException:$Proxy263 cannot be cast to oracle.sql.BLOB错误分析
- Hibernate操作Blob/Clob时,发生cannot be cast to oracle.sql.BLOB错误分析
- 发生系统错误 1067
- 原生ajax发生json数据完整案例
- 装了XP系统后,意想不到的事情发生了
- 从输入网址到网页完整展现到底发生了什么?
- 当ORACLE突然断电,重新启动过程发生了哪些事?
- JAVA-JDBC: (3)操作日期类型和CLOB、BLOB类型
- 笔试题目---描述在浏览器中敲入一个网址并按下回车后所发生的事情
- 在浏览器页面输入url敲击enter键,发生了什么-《网络是如何连接的》总结
- 将安全性信息应用到以下对象时发生错误”解决办法
- SparkStreaming读取Kakfa数据时发生OffsetOutOfRangeException异常
- Blob对象 或者clob对象 java spring c3p0处理
- 最近发生了很多事情
- Delphi2010 运行时经常会发生关于rtl140.bpl的报错
- hadoop从本地复制文件到hdfs上发生错误Name node is in safe mode的解决方法
- solr4.0.0学习(二) 数据库导入clob与blob为索引
- 不久前重新安装了Windows7,在安装了VS2010 开发平台之后,将网站发布到IIS,访问发生如下错误: HTTP 错误 500.21 - Internal Server Error处理程序“N
- 转换为XML文件时发生 javax.xml.transform.TransformerException: java.lang.NullPointerException