Из Javado c для Blob # getBytes :
byte [] getBytes (long pos, int length) выбрасывает SQLException pos - порядковый номер первого байта в извлекаемом значении BLOB; первый байт находится в позиции 1
Итак, ваш вызов getBytes()
должен передавать 1 в качестве начальной позиции, а не ноль:
String newValue = new String(newValueBLOB.getBytes(1, (int) newValueBLOB.length()));
В качестве альтернативы, возможно, проще, вы можете просто использовать ResultSet#getBytes
напрямую:
ResultSet rs = stmt.executeQuery(query);
byte[] newValue = rs.getBytes("NEW_VALUE");
String newValueStr = new String(newValue);