Re: JDBC Driver can't read UUID from database

Lists: pgsql-bugs
From: Dean Schulze <dschulze(at)knowledgefactor(dot)com>
To: "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Subject: JDBC Driver can't read UUID from database
Date: 2012-06-05 23:26:53
Message-ID: CBF3F1DC.2E8%dschulze@knowledgefactor.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs


I'm using Hibernate (3.6 and 4.0) with Postgresql 9.1. Our tables have UUIDs in them and your driver is trying to convert UUIDs to longs:

Caused by: org.postgresql.util.PSQLException: Bad value for type long : dbada1e4-a165-4601-b34e-d08428cd81df

at org.postgresql.jdbc2.AbstractJdbc2ResultSet.toLong(AbstractJdbc2ResultSet.java:2796)

at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLong(AbstractJdbc2ResultSet.java:2019)

at org.postgresql.jdbc4.Jdbc4ResultSet.getBlob(Jdbc4ResultSet.java:52)

at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getBlob(AbstractJdbc2ResultSet.java:335)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.hibernate.engine.jdbc.internal.proxy.AbstractResultSetProxyHandler.continueInvocation(AbstractResultSetProxyHandler.java:104)

... 32 more

I've tried chaining the Hibernate annotations to treat them as Strings and CLOBs but I get the same exception.

Driver versions I've tried are 9.0-801.jdbc4 and 9.1-901.jdbc4

This is a show stopper.


From: Kris Jurka <books(at)ejurka(dot)com>
To: Dean Schulze <dschulze(at)knowledgefactor(dot)com>
Cc: "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: JDBC Driver can't read UUID from database
Date: 2012-06-06 08:12:56
Message-ID: alpine.BSO.2.00.1206060409230.12129@leary.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

On Tue, 5 Jun 2012, Dean Schulze wrote:

>
> I'm using Hibernate (3.6 and 4.0) with Postgresql 9.1.  Our tables have
> UUIDs in them and your driver is trying to convert UUIDs to longs:
>

This is a hibernate mapping problem, not a JDBC Driver problem. If you
have a plain ResultSet and call getString() on a UUID field, it will
certainly work. Mapping the UUID to BLOB or CLOB is incorrect. I'm not
sure why your attempt to map it to a String didn't work, but you are
not convincing Hibernate to use a plain getString call.

Kris Jurka


From: Dean Schulze <dschulze(at)knowledgefactor(dot)com>
To: Kris Jurka <books(at)ejurka(dot)com>
Cc: "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: JDBC Driver can't read UUID from database
Date: 2012-06-11 02:43:47
Message-ID: 285378F79EC333408F3AAE73259CCD40626D6C@mbx024-w1-ca-5.exch024.domain.local
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs


Thanks.

Out of curiosity why didn't the driver map the Postgresql UUID to a Java
UUID?

On 6/6/12 2:12 AM, "Kris Jurka" <books(at)ejurka(dot)com> wrote:

>
>
>On Tue, 5 Jun 2012, Dean Schulze wrote:
>
>>
>> I'm using Hibernate (3.6 and 4.0) with Postgresql 9.1. Our tables have
>> UUIDs in them and your driver is trying to convert UUIDs to longs:
>>
>
>This is a hibernate mapping problem, not a JDBC Driver problem. If you
>have a plain ResultSet and call getString() on a UUID field, it will
>certainly work. Mapping the UUID to BLOB or CLOB is incorrect. I'm not
>sure why your attempt to map it to a String didn't work, but you are
>not convincing Hibernate to use a plain getString call.
>
>Kris Jurka


From: Kris Jurka <books(at)ejurka(dot)com>
To: Dean Schulze <dschulze(at)knowledgefactor(dot)com>
Cc: "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: JDBC Driver can't read UUID from database
Date: 2012-06-11 21:28:07
Message-ID: alpine.BSO.2.00.1206111726250.17050@leary.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

On Mon, 11 Jun 2012, Dean Schulze wrote:

> Out of curiosity why didn't the driver map the Postgresql UUID to a Java
> UUID?
>

The example I gave of calling getString must return a String and not
another type. With a recent JDBC Driver and Java version, calling
getObject will return a UUID object.

Kris Jurka