Re: Migration to Hibernate 3.5 final - Mailing list pgsql-jdbc

From Radosław Smogura
Subject Re: Migration to Hibernate 3.5 final
Date
Msg-id 201004101458.54501.rsmogura@softperience.eu
Whole thread Raw
In response to Migration to Hibernate 3.5 final  (Rafael Felix <felix@serhmatica.com.br>)
Responses Re: Migration to Hibernate 3.5 final  (Rafael Felix <felix@serhmatica.com.br>)
List 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
>

pgsql-jdbc by date:

Previous
From: Craig Ringer
Date:
Subject: Re: Migration to Hibernate 3.5 final
Next
From: Ader Javier
Date:
Subject: It is safe remenber current Isolation level in AbstractJdbc2Connection?