Суперкласс сущности с универсальным идентификатором типа 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;

это усложняет последующую реализацию и не решает проблему:(. Каков будет выход из этого?

0 ответов

Другие вопросы по тегам