我想知道如何使用JPA Java enum和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:Vousdevezréécrirel'表达ou lui appliquer une transformation de type。
我认为我可以使用ObjectTypeConverter
作为show here
但是ObjectTypeConverter
是一个EclipseLink
注释,而不是JPA
所以我正在寻找另一种方法来做到这一点。
那么,我怎样才能将Java枚举映射到PostgreSQL枚举?
答案 0 :(得分: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
...
);
我希望它有所帮助。
<强>&GT;&GT;修改
根据您的评论,请查看此answer。