3

I want to create a BLOB field with hibernate/postgresql 9.1.1

Why do I see this message in the logs:

INFO  [org.hibernate.engine.jdbc.internal.LobCreatorBuilder] (MSC service thread 1-5)
HHH000424: Disabling contextual LOB creation as createClob() method threw error : 
java.lang.reflect.InvocationTargetException

I know this is not an error.

Hibernate 4.1 documentation:

"@Lob indicates that the property should be persisted in a Blob or a Clob depending
on the property type: java.sql.Clob, Character[], char[] and java.lang.String will be
persisted in a Clob. java.sql.Blob, Byte[], byte[] and Serializable type will be persisted in a Blob."

I declare my field like this:

@Lob
@Type(type = "org.hibernate.type.MaterializedClobType")
@Basic(fetch=javax.persistence.FetchType.LAZY)
@Column(name = "`ACTA_CERTIFICACION`")
public byte[] getActacertificacion() {
    return actacertificacion;
}
/**
 * @param actacertificacion
 * @uml.property  name="actacertificacion"
 */
public void setActacertificacion(byte[] actacertificacion) {
    this.actacertificacion = actacertificacion;
}

But in the database its create like a text field:

"ACTA_INCREMENTOSUSTITUCION" text

What can I do?, I want to create a byte field or something similar.

Thermech
  • 4,371
  • 2
  • 39
  • 60
Vodo-Siosk Baas
  • 183
  • 3
  • 12
  • 27

1 Answers1

4

Since the you are using text in database, you should be using CLOB type in the POJO class. If you want to map this, just add a property in your POJO as below,

@Column(name="ACTA_INCREMENTOSUSTITUCION")
@Clob
private Clob tect;

Now, as per your requirement you can convert this Clob to a byte[] as told here.

Community
  • 1
  • 1
ManuPK
  • 11,623
  • 10
  • 57
  • 76