Hibernate 4.1.2.FINAL Disabling contextual LOB creation as createClob() method threw error , Blob field

19,574

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.

Share:
19,574
Vodo-Siosk Baas
Author by

Vodo-Siosk Baas

Updated on June 07, 2022

Comments

  • Vodo-Siosk Baas
    Vodo-Siosk Baas almost 2 years

    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.