2010-04-02 21 views
35

Ich habe einen Enum-Typ in meinem Java-Modell, den ich einer Tabelle in der Datenbank zuordnen möchte. Ich arbeite mit Hibernate Annotations und weiß nicht, wie das geht. Da die Antworten, die ich suche, ziemlich alt waren, frage ich mich, welcher Weg der beste ist?Enum-Typen mit Hibernate-Annotationen zuordnen

Vielen Dank im Voraus

Antwort

62

Haben Sie etwas anderes als die @Enumerated Anmerkung benötigen? Zum Beispiel kann die folgende Enumeration:

public enum MyEnum { 
    VALUE1, VALUE2; 
} 

Kann verwendet und wie diese mit Anmerkungen versehen werden:

private MyEnum myEnum; 
@Column(name="myenum") 
@Enumerated(EnumType.ORDINAL) 
public MyEnum getMyEnum() { 
    return myEnum 
} 

Sie können festlegen, wie die Aufzählungs sollten in der Datenbank mit der EnumType Enum-Eigenschaft der @Enumerated Anmerkung beibehalten werden . EnumType.ORDINAL gibt an, dass die Enumeration als ganzzahliger Wert beibehalten wird. Hier myEnum Satz VALUE1 würde als 0 beibehalten werden, VALUE2 als 1 usw.

Die Alternative ist EnumType.STRING zu verwenden, um festzulegen, dass der ENUM wird den Namen des ENUM-Wert beibehalten werden verwendet, dass das Feld eingestellt ist. Auf das vorherige Beispiel angewendet, bleibt das Feld myEnum auf MyEnum.VALUE1 als VALUE1, usw. unverändert.

+0

Vielen Dank! Ich denke, genau das habe ich gesucht. Ich werde es ausprobieren – Thiago

+0

Was kann ich für das @ Id-Feld der Enum-Klasse eingeben? – Thiago

+1

@Thiago Was? Ihre Enumeration ist normalerweise keine Entität, sie hat kein '@ Id'-Feld. Können Sie Ihre Frage aktualisieren, um zu zeigen, was Sie tun? –