Als ik me goed herinner, ondersteunen de Oracle JDBC-stuurprogramma's (tenminste oudere - je hebt ons niet verteld welke versie je gebruikt) setBytes() niet (of getBytes() ).
In mijn ervaring, met behulp van setBinaryStream() is veel betrouwbaarder en stabieler:
InputStream in = new ByteArrayInputStream(data);
pstmt.setBinarySream(4, in, data.length);