为什么EclipseLink找不到静态类枚举转换器?

时间:2019-05-31 19:05:48

标签: java eclipselink converters

我正在尝试创建一个静态的内部类转换器,该转换器访问枚举内的静态映射数组,以便将枚举存储为固定值(序数是不可接受的,因为它可能会无意中被更改)。但是,就我所知,即使合格名称看起来正确,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)

0 个答案:

没有答案