?今天碰到這個問題,起先以為是因為字段varchar(2)類型的問題,
?后來網上查了下,原來oracle10g的驅動程序有問題,

檢查了下程序,是保存相片出問題,photo字段為blob 類型,從一個表查詢出來 保存到另外一張里面去,沒注意null和空串的問題,本例為hibernate

一張相片:
if(blob!=null)
????tbl.setPhoto(blob);?
另外一張:
?BASE64Decoder base64Decoder = new BASE64Decoder();
if(strPhoto!=null or "".equals(strPhoto)
???byte[] bytePhoto = base64Decoder.decodeBuffer(strPhoto);
???Blob blobPhoto?? = Hibernate.createBlob(bytePhoto);
???tbl.setPhoto(blobPhoto);???

另外一種方法利用jdbc來處理

/**
? * 保存操作日志(POJO中的信息)
? * @param POJO?在Hibernate配置文件中存在的POJO對象
? * @param linkTblno 業務編號
? * @param applyType?業務類型
? * @param operType?操作類型 D-刪除 U-修改 對控制信息:C-撤控? F-復控
? * @param process? 流程狀態信息
? * @throws Exception
? */
?public void saveLogFormPOJO(Serializable pojo,
??????????String linkTblno,
??????????String applyType,
??????????String operType,
??????????String process) throws Exception{
??Log.debug(this.getClass(), "保存操作日志(POJO中的信息)...");???
??String tableName = pojo.getClass().getName();//表名
??int d = tableName.lastIndexOf(".");
??tableName = tableName.substring(d+1);???
??Object object[] = this.getOperresult(pojo);???
??String operresult = (String)object[0];?????
??InputStream photo = (InputStream)object[1];??
???
??this.saveLog(linkTblno, applyType, operType, process, tableName, operresult, photo);
??Log.debug(this.getClass(), "保存操作日志完成");??
?}
詳細 見 PoperlogtblDAO