通用ID类型为ENUM

时间:2015-09-02 12:08:09

标签: java jpa enums eclipselink javax.persistence

基本上,我想为某些实体创建一个抽象类。 我们对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 个答案:

没有答案