我有一个包含少量字段的表,其中2个是Varchar和Blob类型。当我使用queryForMap检索它们时,我得到一个带有两个键(列名)的地图实例。我能够简单地将varchar转换为String,但是让ClassCast异常与Object一样。
file = new File(System.currentTimeMillis() + (String) map.get("SAMPLE_DOC_FILE_NAME"));
blob = (Blob) map.get("SAMPLE_DOC");
我的DAO图层方法是:
public Map<String, Object> getSampleDoc1(String docName) throws SQLException {
String query = "select form.sample_doc_file_name as SAMPLE_DOC_FILE_NAME, form.sample_document as SAMPLE_DOC from forms form where form.document_name=?";
return localJdbcTemplateObject.queryForMap(query, docName);
}
例外 - java.lang.ClassCastException: [B cannot be cast to java.sql.Blob
如何将此对象作为Blob返回?
答案 0 :(得分:1)
Blob
只是(可能很大)byte[]
的包装器。你在Spring从这里得到的是有趣的原始数据,byte[]
(或异常表示法中的B[
)。所以,只需使用它,它将更容易使用:
byte[] blob = (byte[]) map.get("SAMPLE_DOC");
答案 1 :(得分:0)
请检查它的类别:
System.out.println(map.get("SAMPLE_DOC").getClass().getName());
然后转换为此类型,然后您可以使用此类型的API对其执行某些操作。