Java 从JdbcTemplate查询Blob时出现连接关闭错误

Java 从JdbcTemplate查询Blob时出现连接关闭错误,java,spring,jdbc,blob,jdbctemplate,Java,Spring,Jdbc,Blob,Jdbctemplate,我正在从数据库查询一个BLOB对象,并试图将其写入文件系统,但我一直遇到连接关闭错误。这是密码 FileOutputStream out; out = new FileOutputStream(filePathtoCreate+File.separator+filename); Blob inBlob= jdbcTemplate.queryForObject("select BLOB_CONTENT from Table_A where name = ?" , Blob.cl

我正在从数据库查询一个BLOB对象,并试图将其写入文件系统,但我一直遇到连接关闭错误。这是密码

FileOutputStream out;

out = new FileOutputStream(filePathtoCreate+File.separator+filename);

        Blob inBlob= jdbcTemplate.queryForObject("select BLOB_CONTENT from Table_A where name = ?" , Blob.class,new Object[] { filename});
        InputStream in = inBlob.getBinaryStream();
        byte[] buf = new byte[1024];
        int len = 0;
        while ((len = in.read(buf)) != -1) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
        } catch (SQLException | IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
当我运行这段代码时,我得到

java.sql.SQLRecoverableException: Closed Connection
    at oracle.sql.BLOB.getDBAccess(BLOB.java:1122)
    at oracle.sql.BLOB.getBinaryStream(BLOB.java:265)
如果我使用常规的JDBC连接,我不会遇到这个问题,所以为什么会发生这种情况,以及如何解决它。提前谢谢

你可以在里面读Blob,:

查询给定的SQL以从SQL创建一个准备好的语句,并创建一个要绑定到查询的参数列表,通过行映射器将每一行映射到一个结果对象

jdbcTemplate.query("select * from Report where id =?",
              new Object[]{id}, (resultSet, i) -> {
                  return toReport(resultSet);
              });

private Report toReport(ResultSet resultSet) throws SQLException {
  InputStream contentStream = resultSet.getClob("CONTENT")
                                       .getAsciiStream();
  String content =
          new Scanner(contentStream, "UTF-8").useDelimiter("\\A").next();
  report.setContent(content);
  Blob blob = resultSet.getBlob("IMAGE");