wie zu verwenden enum mit jpa als Daten-member von persistenten entity?
Bitte best practice und 'wie' für die Verwendung von enum mit jpa als Daten-member von persistenten entity.
was ist die beste Praxis?
Ich will persist "C", "O" von enum. (codes). Ist dies nicht der richtige Ansatz, bitte vorschlagen.
Enum Begriff ist --
public enum Status{
CLOSED ("C")
OPEN ("O")
private final int value;
private Status(final int pValue){
this.value = pValue;
}
public int value(){
return this.value;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
erwartet Lösung:
enum Begriff:
}
Entity Definition:
Wir bleiben enums als String. Verwenden
@Enumerated(EnumType.STRING)
zur Verwendung der string-Darstellung (anstatt die automatische enum-code). Das macht Ihre Daten in der DB ist viel besser lesbar.Wenn Sie wirklich brauchen, um die Karte Enumerationen, um spezielle codes (legacy-code und ähnliches), müssen Sie eine benutzerdefinierte Zuordnung. Zuerst wird eine Basis-Klasse, welche Karten Enumerationen, die zu den DB-und zurück:
Nun eine Erweiterung, die verwendet DBEnum um die anzeigen-Werte für Ihre Enumerationen, die zu den DB-und zurück:
Schnittstelle:
Schließlich müssen Sie verlängern
DBEnumType
für jede enum-Typ, die Sie zuordnen möchten:In
Status
müssen Sie implementieren Sie die statische Methode, die Karten-DB-codes zu enums:Schließlich müssen Sie die Verwendung der annotation
@org.hibernate.annotations.Type()
zu sagen, Hibernate verwenden Sie das benutzerdefinierte mapping.Fazit: nicht verwenden, benutzerdefinierte codes. Sie generieren eine Menge dumme boiler-plate-code, die können Sie nicht Faktor.
Enums werden standardmäßig unterstützt JPA, aber problem ist, Sie verwenden die Ordnungszahlen der Werte standardmäßig, die Sie nicht kontrollieren können.
Um dieses Problem zu lösen Sie könnte ein wenig Logik auf Ihre getter-setter.
EnumUtils sollte die Konvertierung zu tun...