【发布时间】:2013-01-29 07:23:21
【问题描述】:
我想知道如何映射 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 指数:Vous devez réécrire l'expression ou lui appliquer une transformation de type。
我想我可以成功使用ObjectTypeConverter 显示here
但ObjectTypeConverter 是EclipseLink 注释,而不是JPA,所以我正在寻找另一种方法。
那么,我该如何将 Java 枚举映射到 PostgreSQL 枚举呢?
【问题讨论】:
-
标准 JPA 不支持自定义转换器。如果您不想使用 eclipselink 特定的转换器,那您就不走运了,您必须使用 String 或 Integer。
-
我可以使用 EclipseLink 转换器。我想知道是否有更“常规”和抽象的方式来做到这一点。谢谢
-
我不能成功...你能有一些代码吗?
标签: postgresql jpa enums eclipselink