Skip to content

Commit

Permalink
Fix Hibernate 6.6 JSON mapping on Oracle BLOB column type #742
Browse files Browse the repository at this point in the history
  • Loading branch information
vladmihalcea committed Sep 30, 2024
1 parent 62196bc commit 1958252
Showing 1 changed file with 7 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.hibernate.HibernateException;
import org.hibernate.annotations.common.reflection.XProperty;
import org.hibernate.annotations.common.reflection.java.JavaXMember;
import org.hibernate.dialect.OracleDialect;
import org.hibernate.engine.jdbc.BinaryStream;
import org.hibernate.engine.jdbc.CharacterStream;
import org.hibernate.engine.jdbc.internal.BinaryStreamImpl;
Expand All @@ -23,6 +24,7 @@
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.nio.charset.StandardCharsets;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.SQLException;
Expand Down Expand Up @@ -152,8 +154,11 @@ public <X> X unwrap(Object value, Class<X> type, WrapperOptions options) {
} else if (Blob.class.isAssignableFrom(type)) {
String stringValue = (value instanceof String) ? (String) value : toString(value);

final Blob blob = BlobJavaType.INSTANCE.fromString(stringValue);
return (X) blob;
if(options.getDialect() instanceof OracleDialect) {
return (X) PrimitiveByteArrayJavaType.INSTANCE.unwrap(stringValue.getBytes(StandardCharsets.UTF_8), Blob.class, options);
} else {
return (X) BlobJavaType.INSTANCE.fromString(stringValue);
}
} else if (Clob.class.isAssignableFrom(type)) {
String stringValue = (value instanceof String) ? (String) value : toString(value);

Expand Down

0 comments on commit 1958252

Please sign in to comment.