Суперкласс сущности с универсальным идентификатором типа ENUM
По сути, я хочу создать абстрактный класс для некоторых объектов. Мы используем EclipseLink 2.6.0
с большинством аннотаций от javax.persistance
пакет.
Проблема, с которой я борюсь, выглядит так:
@MappedSuperclass
public abstract class EnumKeyValueEntity<T extends Enum<T>, K> {
public EnumKeyValueEntity() {
}
@Id
@Enumerated(EnumType.STRING)
private T id;
private K value;
/** getters & setters **/
}
ПРОБЛЕМА
И настоящая проблема изолирована от: @Enumerated(EnumType.STRING)
, Я хотел бы использовать эту аннотацию, чтобы в базе данных была правильная строка вместо числа.
Однако (я думаю), потому что это абстрактный класс, я получаю ошибку во время тестов. Источник этого описывается как:
[ERROR] Internal Exception: Exception [EclipseLink-7151] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): org.eclipse.persistence.exceptions.ValidationException
[ERROR] Exception Description: The type [class java.lang.String] for the attribute [id] on the entity class [class pl.ds.eemediation.storage.entities.EnumKeyValueEntity] is not a valid type for an enumerated mapping. The attribute must be defined as a Java enum.
Но хорошо, T
действительно распространяется Enum
,
Я тоже пробовал
private Enum<T> id;
это усложняет последующую реализацию и не решает проблему:(. Каков будет выход из этого?