Postgresql, JDBC e streaming de BLOBs

Eu estou tentando recuperar um blob de um banco de dados postgres usando os drivers jdbc. É muito grande para ter na memória, então eu quero transmitir como um download. Eu tentei usar o método getBinaryStream no ResultSet, mas acontece que esse método realmente lê tudo na memória, então não funciona para arquivos grandes.

Aparentemente, é possível usar o método getBlob no conjunto de resultados e, presumivelmente, obter o fluxo de entrada do blob e ir a partir daí, mas é aí que me deparo com o problema.

PreparedStatement ps = con.prepareStatement("select data from file_data WHERE ID = ?");
ps.setLong(1,file.fileData.id)
ResultSet rs = ps.executeQuery()
if(rs.next()){
        rs.getBlob("data")

Esse é o código que estou executando. Quando chegar a essa última linha, jogue fora um erro que eu não consigo entender ...

org.postgresql.util.PSQLException: Valor inválido para o tipo longo: xxxxxx

"xxxxxx" então é o conteúdo do arquivo. Você pode imaginar que fica bastante longo, mas não é realmente o ponto.

Estou preso aqui. Alguém tem alguma ideia do que está acontecendo? Heck Vou até tomar métodos alternativos para streaming de grandes bolhas como um download.

questionAnswers(2)

yourAnswerToTheQuestion