Re: Migration to Hibernate 3.5 final

From: Rafael Felix <felix(at)serhmatica(dot)com(dot)br>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Migration to Hibernate 3.5 final
Date: 2010-04-12 11:45:49
Message-ID: 4BC307ED.7070801@serhmatica.com.br
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Radoslaw and Craig,

Thanks for ansewers, the @Type annotations was worked for me.

About the Craig questions, I'm using the literal oid field.

Thanks for all

regards

Em 10/4/2010 09:58, Radosław Smogura escreveu:
> 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
>>
>>
>

--
*Rafael Guzi Felix da Silva*
*Desenvolvedor de Sistemas*
Serhmatica Sistemas e Serviços de Informática <http://www.serhmatica.com.br>
Telefone: (49) 3566 1303

--
Serhmatica
visite: www.serhmatica.com.br
Esta mensagem foi verificada pelo sistema de antivrus e
acredita-se estar livre de perigo.

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Radosław Smogura 2010-04-12 16:28:52 Re: Migration to Hibernate 3.5 final
Previous Message Maciek Sakrejda 2010-04-11 04:06:10 Re: It is safe remenber current Isolation level in AbstractJdbc2Connection?