12

Java UUID で PostgreSQL のネイティブ UUID タイプを使用したいと考えています。JPA プロバイダーおよび ORM として Hibernate を使用しています。直接保存しようとすると、Postgres にバイトとして保存されます。

これどうやってするの?

4

6 に答える 6

5

Hibernate でサポートされている Postgresql UUIDに関する私の回答の再投稿は次のとおりです。... 私はこの質問が古いことを知っていますが、誰かがそれに出くわした場合、これは彼らを助けるでしょう.

これは、UUID に次の注釈を追加することで解決できます。

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

Hibernate がこれをデフォルト設定にしない理由については、私にはわかりません...

更新createNativeQuery:メソッドを使用して UUID フィールドを持つオブジェクトを開くには、まだ問題があるようです。幸いなことに、createQueryこれまでの方法でうまくいきました。

于 2011-11-23T03:36:39.010 に答える
1

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

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

ここで、columnDefinition はネイティブ SQL のフラグメントです

于 2009-04-21T14:31:03.673 に答える
0

おそらく、UUID 型を文字列に自動変換することができます (uuid.toString() は正規の 36 文字表現を提供する必要があります)。DB は通常、文字列とネイティブ型の間で確実に変換します。

于 2009-04-22T21:50:18.913 に答える
0

非 JPA の使用法では、UserType を作成して UUID を PostgreSQL が受け入れる文字列としてフォーマットし、UserType 実装の名前を列の型として指定します。

于 2009-04-17T17:39:51.350 に答える