我正在尝试使用 JPA(EclipseLink
提供程序)将 postgreSQLENUM
类型映射到 Java 枚举类型(反之亦然)。
我知道我可以varchar
使用注释轻松地将 Java 枚举映射到我的 postgreSQL 数据库中的类型,@Enumerated
但我想将它映射到 postgreSQL ENUM
tpye 中。我想我必须使用自定义的 EclipseLink 转换器来做到这一点。
所以,我开始实现 aorg.eclipse.persistence.mappings.converters.Converter
但我不知道如何实现 the convertObjectValueToDataValue
, theinitialize
和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 不是我的朋友。