7

私はこの列挙型を持っています:

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 として保存することをお勧めします。

どうやってやるの?

4

1 に答える 1

11

Annotation EnumMappingまたはEnumValueを使用して、非常に細かく定義できます。これは古いバージョンの org.avaje.ebean で動作します。

コードの完全な書き直しがあったようです。実際のバージョンでは、別のアプローチがあります。

于 2012-07-19T10:51:21.523 に答える