我正在尝试创建一个静态的内部类转换器,该转换器访问枚举内的静态映射数组,以便将枚举存储为固定值(序数是不可接受的,因为它可能会无意中被更改)。但是,就我所知,即使合格名称看起来正确,EclipseLink也找不到转换器。
我也在转换器上尝试了autoApply = true并删除了@Convert批注,但是EclipleLink抱怨我的Enum不可序列化。
我看了Is it possible to write a generic enum converter for JPA?答案中的IndOrientiation
个示例,这似乎正是我想要做的,但是由于某些原因,它不想在我的项目中工作。 (我使用的是Integer而不是String,但实际上是完全一样的。)
public class Role {
@Convert(converter = RoleType.RoleTypeConverter.class)
public RoleType roleType;
// ...
}
public enum RoleType {
IMPLICIT(1),
EXPLICIT(2);
Integer value;
RoleType(int value) { this.value = value }
@Converter
public static class RoleTypeConverter
implements AttributeConverter<RoleType, Integer> {
// Converts between fixed Integer and enum values
// ... converter implementation removed for brevity ...
}
}
这是我尝试启动应用程序时收到的错误:Exception Description: The converter class [com.myapp.backend.lib.access.enums.RoleType$RoleTypeConverter] specified on the mapping attribute [roleType] from the class [com.myapp.backend.lib.access.model.Role] was not found. Please ensure the converter class name is correct and exists with the persistence unit definition.
at org.eclipse.persistence.exceptions.EntityManagerSetupException.predeployFailed(EntityManagerSetupException.java:233)