Я пытаюсь извлечь blob из базы данных postgres, используя драйверы jdbc. Он слишком велик, чтобы иметь в памяти, поэтому я хочу передать его как загрузку. Я попытался использовать метод getBinaryStream на ResultSet, но выясняется, что этот метод действительно читает все это в памяти, поэтому не работает для большого файла.
По-видимому, можно использовать метод getBlob в наборе результатов и предположительно получить входной поток от blob и перейти оттуда, но именно там я столкнулся с моей проблемой.
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")
Это код, который я запускаю. Когда он добирается до последней строки, он выдает ошибку, которую я не могу понять...
org.postgresql.util.PSQLException: Плохое значение для типа long: xxxxxx
"xxxxxx" - это содержимое файла. Вы можете себе представить, что это довольно длительное время, но на самом деле это не так.
Я застрял здесь. Кто-нибудь есть идеи о том, что происходит? Черт, я даже возьму альтернативные методы для потоковой передачи больших капель в качестве загрузки.