java insert Blob as ByteArrayOutputStream получает ClassCastException

Я должен сохранить pdf-файл, представленный как ByteArrayOutputStream, в поле BLOB SQL таблицы, вот мой код:

public boolean savePDF(int version, ByteArrayOutputStream baos) throws Exception{ boolean completed = false; ConnectionManager conn = new ConnectionManager(); try { PreparedStatement statement = conn.getConnection().prepareStatement(INSERT_PDF); statement.setLong(1, version); statement.setBlob(2, (Blob)baos); statement.execute(); conn.commit(); completed = true; } catch (SQLException e) { conn.rollbackQuietly(); e.printStackTrace(); throw e; } catch (ClassNotFoundException e) { e.printStackTrace(); }finally{ conn.close(); } return completed; } 

Но я получаю java.lang.ClassCastException:

 java.io.ByteArrayOutputStream cannot be cast to java.sql.Blob 

Как я могу это сделать? благодаря

Существует setBlob который принимает InputStream , поэтому

 ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); statement.setBlob(2, bais); 

Вы не можете использовать ByteArrayOutputStream для Blob . Попробуйте создать экземпляр Blob как Blob ниже:

  SerialBlob blob = new SerialBlob(baos.toByteArray()); 

а потом

  statement.setBlob(2, blob);