4

JPA Java enum と PostgreSQL enum type をどのようにマッピングするのだろうか?

PostgreSQL側では、このタイプを作成しました:

CREATE TYPE langage AS ENUM ('FR', 'EN', 'DE');

そして、私は Java enum を持っています:

public enum LangageEnum {   
   FR,
   EN,
   DE;
}

私のJPAエンティティフィールドはこれです:

@Enumerated(EnumType.STRING)
@Column(name="langage")
private LangageEnum langage = LangageEnum.FR;

しかし、私は例外を受け取ります:

原因: org.postgresql.util.PSQLException: エラー: la colonne « langage » est de type pretoria.langage mais l'expression est de type character Various Indice: Vous devez réécrire l'expression ou lui appliquer une transform de type.

ObjectTypeConverteras show hereを使用して成功できると思います

しかし、これObjectTypeConverterEclipseLink注釈であるJPAため、これを行う別の方法を探しています。

では、Java enum を PostgreSQL enum にマップするにはどうすればよいですか?

4

1 に答える 1

1

Postgres で列挙型を作成したようですが、テーブルのフィールドはどうでしょうか。

これは私のために働く:

列挙型

public enum CampaignState
{
    READY,
    RUNNING,
    PAUSED,
    FINISHED;
}

実在物

...
@NotNull
@Enumerated(EnumType.STRING)
private CampaignState state = CampaignState.READY;
...

テーブル

CREATE TABLE campaign
(
    id UUID PRIMARY KEY,
    ...
    state CHARACTER VARYING(64) NOT NULL, -- defined by application
    ...
);

お役に立てば幸いです。

>>編集

あなたのコメントに従って、この回答を見てください。

于 2013-02-13T17:09:50.133 に答える