4

我想知道如何使用 JPA Java 枚举和 PostgreSQL 枚举类型进行映射?

在 PostgreSQL 方面,我创建了这种类型:

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

我有一个 Java 枚举:

public enum LangageEnum {   
   FR,
   EN,
   DE;
}

我的 JPA 实体字段是这个:

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

但我收到异常:

引起:org.postgresql.util.PSQLException: ERREUR: la Colonne « langage » est de type pretoria.langage mais l'expression est de type character varying Indice : Vous devez réécrire l'expression ou lui appliquer une transformation de type。

我想我可以在这里ObjectTypeConverter使用as show成功

但是ObjectTypeConverter是一个EclipseLink注释,JPA所以我正在寻找另一种方法来做到这一点。

那么,我怎样才能将 Java 枚举映射到 PostgreSQL 枚举呢?

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 回答