Ich versuche, eine Einheit, wo man des Feldes ist eine Karte mit Enum Schlüssel zu erstellen:JPA-Mapping eine Karte, wo Schlüssel ist ein Enum
public class MyEntity {
@ElementCollection
@CollectionTable(name="attributes", [email protected](name="my_entity_id"))
@MapKeyColumn(name = "attribute_key")
@Column(name="attribute_value")
private Map<Attribute, String> attributes;
}
Die Attribute
ist nur eine einfache Aufzählung ohne zusätzliche Felder oder Logik:
public enum Attribute {
ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3;
}
Diese Karten nett und funktionieren. Aber die Sammeltabelle attributes
erstellt mit integer
Spaltendefinition für meinen Map-Schlüssel, da der Standardwert EnumType.ORDINAL
ist. Für meine Zwecke brauche ich es String, aber ich kann nicht einfach @Enumerated(EnumType.STRING)
auf meinem Feld platzieren, da dies zu einer Ausnahme führt.
Habe ich irgendwelche Möglichkeiten, wie ich dieses gewünschte Verhalten erreichen kann? Vielen Dank.
Versuchen @MapKeyEnumerated (EnumType.STRING). http://stackoverflow.com/questions/25439813/difference-between-mapkey-mapkeycolumn-and-mapkeyjoincolumn-in-hibernate –
Ja, das ist genau das, was ich gesucht habe! Vielen Dank! – DruidKuma
Willkommen, glücklich es hilft. –