Полиморфическая десериализация Джексона на основе Enum

Я работаю с JacksonPolymorphicDeserialization, это мой код, который десериализуется в соответствующий класс, основанный на свойстве type:

@JsonTypeInfo(  
    use = JsonTypeInfo.Id.NAME,  
    include = JsonTypeInfo.As.PROPERTY,  
    property = "type",
    defaultImpl = Event.class, 
    visible = true)  
@JsonSubTypes({        
    @Type(value = SpecialEvent1.class, name = "SPECIAL_EVENT_1"), 
    @Type(value = SpecialEvent2.class, name = "SPECIAL_EVENT_2"), 
    })  
public abstract class AbstractEvent {

    private String type;

    public String getType() {
    return type;
    }

    public void setType(String type) {
    this.type = type;
    }   
}

Это работает отлично, и мой json превращается в ожидаемый класс в соответствии со значением type.

Однако я собираюсь переместить свойство type из String в Enum, это мой новый код с таким изменением:

@JsonTypeInfo(  
    use = JsonTypeInfo.Id.NAME,  
    include = JsonTypeInfo.As.PROPERTY,  
    property = "type",
    defaultImpl = Event.class, 
    visible = true)  
@JsonSubTypes({        
    @Type(value = SpecialEvent1.class, name = "SPECIAL_EVENT_1"), 
    @Type(value = SpecialEvent2.class, name = "SPECIAL_EVENT_2"), 
    })  
public abstract class AbstractEvent {

    private EventType type;

    public EventType getType() {
    return type;
    }

    public void setType(EventType type) {
    this.type = type;
    }   
}

и Enum:

public enum EventType {
    SPECIAL_EVENT_1,
    SPECIAL_EVENT_2,
    EVENT;
}

Проблема в том, что этот второй подход не работает... есть идеи почему??? я могу использовать Enum здесь???

Спасибо!

Ответ 1

Фиксированный!

Он работает с jackson 2.0!!