Si recuerdo correctamente, los controladores Oracle JDBC (al menos los más antiguos, no nos dijo qué versión está usando) no son compatibles con setBytes()
(o getBytes()
).
En mi experiencia, usando setBinaryStream()
es mucho más fiable y estable:
InputStream in = new ByteArrayInputStream(data);
pstmt.setBinarySream(4, in, data.length);