HHH-6972 Support PostgreSQL and Oracle LOBs

This commit is contained in:
brmeyer 2012-09-20 01:24:02 -04:00
parent 54fdb87d30
commit 500e0222b5
1 changed files with 13 additions and 14 deletions

View File

@ -111,27 +111,26 @@ public class BlobTypeDescriptor extends AbstractTypeDescriptor<Blob> {
@SuppressWarnings({ "unchecked" }) @SuppressWarnings({ "unchecked" })
public <X> X unwrap(Blob value, Class<X> type, WrapperOptions options) { public <X> X unwrap(Blob value, Class<X> type, WrapperOptions options) {
if ( ! ( Blob.class.isAssignableFrom( type ) || BinaryStream.class.isAssignableFrom( type ) ) ) {
throw unknownUnwrap( type );
}
if ( value == null ) { if ( value == null ) {
return null; return null;
} }
if ( BinaryStream.class.isAssignableFrom( type ) ) { try {
try { if ( BinaryStream.class.isAssignableFrom( type ) ) {
return (X) new BinaryStreamImpl( DataHelper.extractBytes( value.getBinaryStream() ) ); return (X) new BinaryStreamImpl( DataHelper.extractBytes( value.getBinaryStream() ) );
} else if ( byte[].class.isAssignableFrom( type )) {
return (X) DataHelper.extractBytes( value.getBinaryStream() );
} else if (Blob.class.isAssignableFrom( type )) {
final Blob blob = WrappedBlob.class.isInstance( value )
? ( (WrappedBlob) value ).getWrappedBlob()
: value;
return (X) blob;
} }
catch ( SQLException e ) { } catch ( SQLException e ) {
throw new HibernateException( "Unable to access blob stream", e ); throw new HibernateException( "Unable to access blob stream", e );
}
} }
final Blob blob = WrappedBlob.class.isInstance( value ) throw unknownUnwrap( type );
? ( (WrappedBlob) value ).getWrappedBlob()
: value;
return (X) blob;
} }
public <X> Blob wrap(X value, WrapperOptions options) { public <X> Blob wrap(X value, WrapperOptions options) {