Postgresql, JDBC i strumieniowe BLOBy

Próbuję pobrać obiekt blob z bazy danych Postgres za pomocą sterowników jdbc. Jest zbyt duży, aby mieć go w pamięci, więc chcę go przesłać jako plik do pobrania. Próbowałem użyć metody getBinaryStream na ResultSet, ale okazuje się, że ta metoda faktycznie odczytuje to wszystko do pamięci, więc nie działa dla dużego pliku.

Najwyraźniej można użyć metody getBlob na zestawie wyników, a przypuszczalnie pobrać strumień wejściowy z obiektu blob i stamtąd przejść, ale właśnie tam natrafiam na mój problem.

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")

To jest kod, który używam. Kiedy dotrze do ostatniej linii, wyrzuca błąd, że nie mogę zrozumieć ...

org.postgresql.util.PSQLException: Zła wartość dla typu long: xxxxxx

„xxxxxx” to zawartość pliku. Możesz sobie wyobrazić, że robi się to dość długo, ale nie do końca.

Utknąłem tutaj. Czy ktoś ma jakieś pomysły na temat tego, co się dzieje? Heck, nawet pobiorę alternatywne metody przesyłania strumieniowego dużych obiektów typu blob.

questionAnswers(2)

yourAnswerToTheQuestion