Postgresql で UUID を使用するプロジェクトに JPA (Hibernate) を追加しています。uuid は Postgresql uuid タイプです。
これらの指示に従い、次のような Hibernate 注釈を追加しました。
@Column(name = "uid")
@Type(type="pg-uuid")
private UUID uid;
Hibernate は、Hibernate 3.6 で Postgres UUID のサポートを追加したと思われます。Hibernate 3.6 と 4.0 を試しましたが、どちらも以下の例外をスローします。
例外は、Postgresql ドライバーが uuid を long に変換しようとしていることを示しています。9.0-801.jdbc4 および 9.1-901.jdbc4 Postgres ドライバーを試しました。別のデータベース ドライバーを入手する必要がありますか?
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