質問

使いたいのPostgreSQLのネイティブのUUIDの型をJava UUID.を使用してい冬眠っJPAプロバイダは、ORM.ばくまで保存されてbyteaにPostgres.

する方法を教えてください。

役に立ちましたか?

解決

JDBCドライバ(現在8.4dev-700)の最新開発版を使用してみるか、次のリリースバージョンを待ちます。 (追加する編集:8.4から701がリリースされました)。

リリースには、この変更に言及を指摘します:

  

java.util.UUIDに、データベースのUUIDタイプの地図。これは比較的新しいサーバー(8.3)およびJDK(1.5)のバージョンで動作します。

他のヒント

こちらの転載の私の回答 PostgresqlのUUIDを支え、Hibernate? ...この問題は古いですが、だ理解するところで、このこんで頂きたいと思います。

こ解決することができる追加のアノテーションのUUID:

import org.hibernate.annotations.Type;
...
@Type(type="pg-uuid")
private java.util.UUID itemUuid;

理由としては、Hibernateだけの悩みではありません、このデフォルトの設定では、しかし、かっこよくてお---

更新:いう問題に createNativeQuery 手法の開してUUIDます。幸いなことに、 createQuery 方法としては、これまでに上手でした。

非JPAの使用状況では、私はそれからちょうど列の型としてのUserType実装の名前を付け、PostgreSQLが受け入れることを文字列としてUUIDをフォーマットするのUserTypeを作成すると思います。

あなたが試すことができます:

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

columnDefinitionネイティブSQLの断片である

おそらく、あなたは(標準的な36-char型の表現を与える必要があります)uuid.toString()UUID型の自動変換後の文字列にすることで入手できますか? DBを通常の文字列とネイティブ型の間に確実なものに変換します。

これを試してみてください。

@Column(name = "UUID", nullable=false, insertable = false, columnDefinition="uuid DEFAULT uuid_generate_v4()")
private String uuid;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top