2016-12-12 2 views
0

Hibernate 5.0を使用してPostgresにJava UUIDをバイト配列として格納する方法は?
モデル: Postgres + Hibernate:Hibernate 5.0へのアップグレード後にUUIDをBYTEAにマッピングすると失敗する

@Entity 
@Table(name = "childs") 
public class Child { 
    ... 
    @Type(type = "pg-uuid") 
    private UUID parentId; 
    ... 
} 

表:Hibernateは4.3でうまく動作するために使用

CREATE TABLE childs (
    ... 
    parent_id BYTEA, 
    ... 
); 

すべて。私はPostgresUUIDTypeのソースコードをチェックし、休止状態の新しいバージョンでは、以下が追加されたことがわかっ

PSQLException: ERROR: column "parent_id" is of type bytea but expression is of type uuid 

@Override 
protected boolean registerUnderJavaType() { 
    // register this type under UUID when it is added to the basic type registry 
    return true; 
} 

Iを5.0を休止状態にアップグレードした後、私は次のエラーを取得していますモデルのフィールドのタイプを@Type(type = "uuid-binary")に変更しようとしましたが、それでも同じエラーが発生しました。 (列のタイプをUUIDに変更することはオプションではありません)
何か助けていただければ幸いです。ありがとう。

答えて

0

私はこの問題を解決することが分かっ最も簡単な方法は、domainパッケージ(またはこれは必須です場所)にpackage-info.javaに以下を追加することです:

@TypeDef(name = "pg-uuid-binary", defaultForType = UUID.class, typeClass = UUIDBinaryType.class) 

そして@Type(type = "pg-uuid-binary")ph-uuid-binaryとドメインのフィールドに注釈を付けます。

私にはuuid-binaryの定義とまったく同じように見えますが、何とか動作しません。

関連する問題