Re: Migration to Hibernate 3.5 final

From: Radosław Smogura <rsmogura(at)softperience(dot)eu>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Migration to Hibernate 3.5 final
Date: 2010-04-10 12:58:54
Message-ID: 201004101458.54501.rsmogura@softperience.eu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

I had similar problems, try use on byte[] field following Hibernate annotation
@Type(type="org.hibernate.type.PrimitiveByteArrayBlobType")

Dnia sobota 10 kwiecień 2010 o 13:36:42 Craig Ringer napisał(a):
> Rafael Felix wrote:
> > I´ve an application running in hibernate 3.3.2 and the applications
> > works fine, with all blob fields using oid (byte[] in java),
>
> Do you mean you're using the literal type `oid' in the Pg fields? Or are
> you using the `lo' contrib type?
>
> By using the `oid' type you're using out-of-line large objects,
> referenced by object id (oid).
>
> If you use `oid' directly, then when you delete a row from your table
> the corresponding large object will NOT be deleted. The `lo' wrapper
> contrib type provides that. It's not in mainline yet (alas), perhaps
> because it can't guarantee correctness - in particular a TRUNCATE TABLE
> will still leak large objects.
>
> > Migrating to hibernate 3.5 all blob fields not work anymore, and the
> > server log shows
> >
> > ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: column
> > "preferencia" is of type oid but expression is of type bytea
>
> OK, so you're now mapping byte[] to the Pg type 'bytea' instead of to pg
> large objects.
>
> You can change this mapping in your hibernate settings if you want
> things to go back to how they were. See large object mapping in the
> Hibernate documentation.
>
> > But I'm cann't change the tables struct for use bytea instead oid,
> > because I lost all data.
>
> Do you mean "because you've lost all your data" or "because by doing so
> you will lose all your data"?
>
> I presume the latter.
>
> What I'd do would be:
>
> a) Change hibernate's mapping for byte[] back to large object instead of
> bytea by overriding it in the Hibernate configuration
>
> b) Evaluate whether bytea or large object is actually better for you by
> reading the postgresql documentation and thinking a about your needs.
> Consider how often you update the data, how big the maximum size of
> object you need to store is, etc.
>
> c) Decide whether you should migrate to bytea or stick with large objects.
>
> d) If you stick to large objects, switch from raw oid types to `lo'
> types, so you get proper large object cleanup on delete/update. Consider
> using vacuumlo .
>
> --
> Craig Ringer
>

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Ader Javier 2010-04-11 03:41:07 It is safe remenber current Isolation level in AbstractJdbc2Connection?
Previous Message Craig Ringer 2010-04-10 11:36:42 Re: Migration to Hibernate 3.5 final