views:

583

answers:

2

hi, i am having problem updating a blob with hibernate. (i am using Hibernate 3.3.1-GA)

my model have these getters/setters for hibernate, i.e. internally i deal with byte[] so any getter/setter convert the byte[] to blog.

I can create an initial object without problem, but if I try to change the content of the blob, the database column is not updated. I do not get any error message, everything looks fine, except that the database is not updated.

/** do not use, for hibernate only */
public Blob getLogoBinaryBlob() {
    if(logoBinary == null){
        return null;
    }
    return Hibernate.createBlob(logoBinary);
}

/** do not use, for hibernate only */
public void setLogoBinaryBlob(Blob logoBinaryBlob) {

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try {
        logoBinary = toByteArrayImpl(logoBinaryBlob, baos);
    } catch (Exception e) {
    }
  }

my hibernate mapping for the blob looks like

<property name="logoBinaryBlob" column="LOGO_BINARY" type="blob" />

The database used is Oracle.

A: 

Ok, what i ended up doing in the end is creating a separate table for the blob, and by any update of the main object, it will delete and create new entries in the separate table. (hence no updates are performed)

Not ideal, but it works.

JohnSmith
A: 

Wow, I finally able to find the solution for the Update in BLOB data using Hibernate.


session.merge(domain); // changes blob value to 44

Changing it to this avoids the problem:

Domain merged = (Domain) session.merge(domain); merged.setBlob(Hibernate.createBlob(domain.getBlob().getBinaryStream()));


Thanks to Chris Bredesen for his post. Here is the link:

http://opensource.atlassian.com/projects/hibernate/browse/HHH-2680?focusedCommentId=37401#action_37401

Thanks in Advance, Suresh Vayugundla

suresh