将JDBC转换为Blob时的Spring JDBC - ClassCastException

时间:2015-11-19 06:21:25

标签: java mysql spring spring-jdbc

我有一个包含少量字段的表,其中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返回?

2 个答案:

答案 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对其执行某些操作。