У меня есть столбец с именем DOC_FILE и типом BLOB в моей базе данных Oracle. И в моем классе Java я объявил его как закрытый байт [] 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;
, который объявлен для вставки Image / PDF в базу данных Oracle.Итак, в моем классе DaoImpl метод обновления в Oracle Database:
@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());
}
}
Я отправил файл imageFile, используя base64 Encoding (я не вставил все эти коды Base64, потому что он тожебольшой):
{
docId:1,
letterNo:1,
seqNo:1,
docFile:iVBORw0KGgoAAAANSUhEUgAAAsQAAAHgCAYAAACigHs+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAP+lSURBVHhe7H0FgB1F1vW4W5xAiI5PJglBFocFls
}
Итак, при попытке вставить BLOB-файл возникает ошибка inParamMap.put ("P_DOC_FILE", letterDoc.getDocFile ()); , но этовыдает ошибку как:
SEVERE: Servlet.service () для сервлета [dispatcher] в контексте с исключением пути пути [Ошибка обработки запроса;вложенным исключением является org.springframework.jdbc.UncategorizedSQLException: CallableStatementCallback;исключение без категории для SQL [{call PCPR_EDIT_LETTER_DOC (?,?,?,?,?)}];Состояние SQL [99999];код ошибки [17004];Неверный тип столбца;вложенное исключение: java.sql.SQLException: недопустимый тип столбца] с основной причиной java.sql.SQLException: недопустимый тип столбца