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