public interface EnumBase {
String name();
}
public enum TestEnum implements EnumBase {
FOO, BAR
}
@MappedSuperclass
public static abstract class GenericBaseEntity<T extends EnumBase> {
@Enumerated(EnumType.STRING)
protected T state;
public T getState() {
return state;
}
public void setState(T state) {
this.state = state;
}
}
@Entity
public static class TestEntity extends GenericBaseEntity<TestEnum> {
@Id
private long id;
protected TestEntity() {
}
public TestEntity(long id) {
this.id = id;
}
}