Java UUID で PostgreSQL のネイティブ UUID タイプを使用したいと考えています。JPA プロバイダーおよび ORM として Hibernate を使用しています。直接保存しようとすると、Postgres にバイトとして保存されます。
これどうやってするの?
Java UUID で PostgreSQL のネイティブ UUID タイプを使用したいと考えています。JPA プロバイダーおよび ORM として Hibernate を使用しています。直接保存しようとすると、Postgres にバイトとして保存されます。
これどうやってするの?
Hibernate でサポートされている Postgresql UUIDに関する私の回答の再投稿は次のとおりです。... 私はこの質問が古いことを知っていますが、誰かがそれに出くわした場合、これは彼らを助けるでしょう.
これは、UUID に次の注釈を追加することで解決できます。
import org.hibernate.annotations.Type;
...
@Type(type="pg-uuid")
private java.util.UUID itemUuid;
Hibernate がこれをデフォルト設定にしない理由については、私にはわかりません...
更新createNativeQuery
:メソッドを使用して UUID フィールドを持つオブジェクトを開くには、まだ問題があるようです。幸いなことに、createQuery
これまでの方法でうまくいきました。
あなたは試すことができます:
@Column(name="foo", columnDefinition="uuid")
ここで、columnDefinition はネイティブ SQL のフラグメントです
おそらく、UUID 型を文字列に自動変換することができます (uuid.toString() は正規の 36 文字表現を提供する必要があります)。DB は通常、文字列とネイティブ型の間で確実に変換します。
非 JPA の使用法では、UserType を作成して UUID を PostgreSQL が受け入れる文字列としてフォーマットし、UserType 実装の名前を列の型として指定します。