From: http://hansonchar.blogspot.com/2005/06/oracle-blob-mapped-to-byte-in.html
Here is one solution:
1. Keep an internal member field for the byte[] image, with the standard {get|set}Image methods;
2. Add a pair of {get|set}ImageBlob methods for getting and setting the Blob datatype, without the repsective Blob member field. This pair of methods are intended to be invoked only by Hibernate;
3. Change the property mapping from “image” to “imageBlob”, and use “blob” instead of “binary” for the type in the Hibernate mapping file.
Now the blob can be written to and read back from Oracle as byte[] as expected.
Note, with this approach, you may need to use the Oracle 10.1.0.4+ JDBC thin driver regardless to get around a problem related to the blob size greater than 2K bytes (even if you are running the Oracle 9.2.0.x database). Apparently it’s related to a bug in the 9.2.0.x JDBC driver.