2012-07-18 62 views
6

我有這個枚舉在數據庫中沒有值:商店枚舉名稱,使用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。

我該怎麼做?

感謝您的幫助!

回答

10

您可以用Anotation EnumMappingEnumValue定義很細顆粒狀。這適用於舊版本org.avaje.ebean。

似乎有代碼完全重寫。在實際版本中有不同的approach

+0

完美! EnumValue非常適合我!謝謝:) – 2012-07-19 12:49:10

+0

兩個鏈接現在都死了,你能添加一些說明這樣做呢? – TheChetan 2017-12-20 06:50:20