【发布时间】:2013-01-30 20:27:58
【问题描述】:
我正在尝试使用 JPA(EclipseLink 提供程序)将 postgreSQL ENUM 类型映射到 Java 枚举类型(反之亦然)。
我知道我可以使用 @Enumerated 注释轻松地将 Java 枚举映射到我的 postgreSQL 数据库中的 varchar 类型,但我想将它映射到 postgreSQLENUM tpye 中。我想我必须使用自定义的 EclipseLink 转换器来做到这一点。
所以,我开始实现org.eclipse.persistence.mappings.converters.Converter,但我不知道如何实现convertObjectValueToDataValue、initialize 和isMutable 方法...
谁能解释一下如何实现这些方法?
目前,我的课是这个:
public class EnumConverter implements Converter {
private static final long serialVersionUID = 1L;
public Object convertDataValueToObjectValue(Object object, Session session) {
if(object instanceof PGobject){
return LangageEnum.valueOf(LangageEnum.class, ((PGobject)object).getValue());
}
return null;
}
public Object convertObjectValueToDataValue(Object object, Session session) {
// WHAT HERE...?
// I tried to play with PGObject witout success...
return object;
}
public void initialize(DatabaseMapping arg0, Session arg1) {
// WHAT INITIALIZATION HERE...?
}
public boolean isMutable() {
// TRUE OR FALSE AND WHY...?
return false;
}
}
@Converter(name="langageConverter", converterClass=EnumConverter.class)
@Convert(value="langageConverter")
private LangageEnum langage;
感谢您的解释,我用 Google 搜索了 EclipseLink 的自定义转换器,但这次 Google 不是我的朋友。
【问题讨论】:
标签: postgresql jpa enums eclipselink