0

基本上,我想为某些实体创建一个抽象类。我们使用包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;

它使以后的实现复杂化并且不能解决问题:(。解决这个问题的方法是什么?

4

0 回答 0