我在Oracle数据库中有一个名为 DOC_FILE 且类型为 BLOB 的列。在我的java类中,我已将其声明为 private byte [ ] docFile; 我有一个声明为:
的类public class LetterDoc {
private BigDecimal letterNo;
private BigDecimal docId;
private byte[] docFile;
private String entryBy;
private String rStatus;
private String othersDescription;
private BigDecimal seqNo;
//omitted getters and setters
}
这里有private byte[] docFile;
,它声明用于在Oracle数据库中插入Image / PDF。因此,在我的DaoImpl类中,在oracle数据库中更新的方法是:
@Repository
public class LetterDocDaoImpl implements LetterDocDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void updateLetterDoc(LetterDoc letterDoc) {
SimpleJdbcCall updateStausAfterSubmit = new SimpleJdbcCall(jdbcTemplate).
withProcedureName("PCPR_EDIT_LETTER_DOC");
Map<String, Object> inParamMap = new HashMap<String, Object>();
inParamMap.put("P_LETTER_NO",letterDoc.getLetterNo());
inParamMap.put("P_DOC_ID", letterDoc.getDocId());
inParamMap.put("P_DOC_FILE",letterDoc.getDocFile());
inParamMap.put("P_SEQ_NO",letterDoc.getSeqNo());
inParamMap.put("P_OTHERS_DESCRIPTION",letterDoc.getOthersDescription());
}
}
我已经使用 base64编码发送了imageFile(我没有粘贴所有那些base64代码,因为它太大了):
{
docId:1,
letterNo:1,
seqNo:1,
docFile:iVBORw0KGgoAAAANSUhEUgAAAsQAAAHgCAYAAACigHs+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAP+lSURBVHhe7H0FgB1F1vW4W5xAiI5PJglBFocFls
}
因此,当我尝试插入BLOB文件时出现错误 inParamMap.put(“ P_DOC_FILE”,letterDoc.getDocFile()); 但这给我的错误是:
严重:Servlet [dispatcher]中的Servlet.service() 路径抛出异常[请求处理失败;嵌套异常为 org.springframework.jdbc.UncategorizedSQLException: CallableStatementCallback;未分类的SQLException for SQL [{call PCPR_EDIT_LETTER_DOC(?,?,?,?,?)}]; SQL状态[99999];错误代码 [17004];无效的列类型;嵌套异常为 java.sql.SQLException:无效的列类型],具有根本原因 java.sql.SQLException:无效的列类型