我想知道如何映射 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;
但我收到异常:
Caused by: 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
显示 here
但是 ObjectTypeConverter
是一个 EclipseLink
注释,而不是 JPA
所以我正在寻找另一种方法来做到这一点。
那么,我怎样才能将 Java 枚举映射到 PostgreSQL 枚举呢?
最佳答案
看起来你在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
...
);
希望对你有帮助。
>> 编辑
根据您的评论,请查看此 answer .
关于PostgreSQL、枚举、JPA、EclipseLink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14858783/