2012-04-09 1 views
0

Ich habe eine MySQL-Tabelle, die ich in der Aufzählung String-Wert am SpeicherungKönnen Sie Enums mit einem Integer-Wert anstelle von EnumType.STRING oder ORDINAL speichern?

hat mein Modell die Anmerkung:.

@Enumerated(EnumType.STRING) 

Meine Enum wie folgt aussieht:

public enum SomeEnum { 

    BLUE(0), 
    YELLOW(1), 
    RED(2), 

    private int value; 

    public SomeEnum(int value) { 
    this.value = value; 
    } 

} 

ich, dass ich hoffte, könnte irgendwie den Integer "Wert" der Enumeration in meiner Datenbank speichern und dann irgendwie wieder mit dem Wert zur Enumeration analysieren, wenn Hibernate mein Modell in eine Java-Klasse lädt.

Ich möchte nicht den Ordnungszahlwert verwenden, da dieser nicht stabil genug ist. Und ich möchte nicht den mysql enum-Typ verwenden, da er mich ohne Grund mit mysql verbindet.

So ist das möglich?

Antwort

2

Warum Sie nicht mit einem Feld versuchen, die int-Typ ist (nicht aufgezählt), und wenn Sie möchten, dass Sie nur bekommen/set es aus dem Enum-Typ, den Sie haben?

+0

Wie kann ich das tun? – Blankman

+0

Dies ist die einzige Lösung, die mit allen JPA-Anbietern funktioniert. – sinuhepop

0

In Grails können Sie eine getId Methode hinzufügen und es den Wert zurückgeben, den Sie verwenden möchten, weil sie bereits einen benutzerdefinierten UserType dafür geschrieben haben. This article hat ein Beispiel zum Erstellen eines ähnlichen UserType, um einen beliebigen Wert aus einer Enum der Datenbank zuzuordnen.

Verwandte Themen