Сохранить имя перечисления, а не значение в базе данных с помощью EBean

У меня есть это перечисление:

public enum DocumentTypes {
    PDF("PDF Document"), JPG("Image files (JPG)"), DOC("Microsoft Word documents");

    private final String displayName;

    DocumentTypes(final String display) {
        this.displayName = display;
    }

    @Override
    public String toString() {
        return this.displayName;
    }
}

И вот такая модель:

@Entity
@Table(name = "documents")
public class Document extends Model {
    @Id
    public Long id;

    @Constraints.Required
    @Formats.NonEmpty
    @Enumerated(EnumType.STRING)
    @Column(length=20, nullable=false)
    public DocumentTypes type;

    @Constraints.Required
    @Formats.NonEmpty
    @Column(nullable=false)
    public String document;
}

Я сопоставляю перечисление, используя это в своем контроллере:

DynamicForm form = form().bindFromRequest();
//...
Document doc = new Document();
doc.type = DocumentTypes.valueOf(form.field("type").value());
doc.save();

Проблема в том, что в базе данных он хранится как «документы Microsoft Word», но я бы предпочел сохранить его как DOC.

Как я могу это сделать ?

Спасибо за вашу помощь!

7
задан Cyril N. 18 July 2012 в 12:30
поделиться