vote up 2 vote down star

I want to use PostgreSQL's native UUID type with a Java UUID. I am using Hibernate as my JPA provider and ORM. If I try to save it directly, it is just saved as a bytea in Postgres.

How can I do this?

flag

4 Answers

vote up 5 vote down check

Try use the latest development version of the JDBC driver (Currently 8.4dev-700), or wait for the next release version. (Edited to add: 8.4-701 has been released)

The release notes mention this change:

Map the database uuid type to java.util.UUID. This only works for relatively new server (8.3) and JDK (1.5) versions.

link|flag
vote up 0 vote down

In non-JPA usage I'd create a UserType to format the UUID as a string that PostgreSQL accepts, then just give the name of the UserType implementation as the column type.

link|flag
vote up 0 vote down

you could try with:

 @Column(name="foo", columnDefinition="uuid")

where columnDefinition is a fragment of native SQL

link|flag
vote up 0 vote down

Perhaps you can get UUID type to be auto-converted to a String (uuid.toString() should give the canonical 36-char representation)? DBs usually convert things reliably between Strings and native types.

link|flag

Your Answer

Get an OpenID
or
never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.