Почему EclipseLink не может найти преобразователь перечисления статического класса? - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь создать статический преобразователь внутреннего класса, который обращается к массиву статических отображений внутри перечисления, чтобы я мог хранить перечисления как фиксированные значения (порядковое значение недопустимо, так как его можно случайно изменить).Тем не менее, EclipseLink не находит конвертер, хотя квалифицированное имя, насколько я могу судить, выглядит правильным.

Я также попробовал autoApply = true на конвертере и отбросил аннотацию @Convert, но затем EclipleLink жалуетсячто мой Enum не сериализуем.

Я посмотрел IndOrientiation пример из Можно ли написать общий преобразователь enum для JPA? ответ, который, кажется, именно то, что я хочу сделать, но по какой-то причине,он не хочет работать в моем проекте.(Я использую 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)

...