Я пытаюсь создать объект, где один из поля является карта с Enum ключа:JPA отображение карты, где ключ является 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;
}
Attribute
только простое перечисление без дополнительных полей или логики:
public enum Attribute {
ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3;
}
Это хорошо отображает и делает работу. Но таблица сбора, attributes
создает с определением столбца integer
для моего ключа карты, по умолчанию EnumType.ORDINAL
. Для моих целей мне нужно, чтобы это была строка, но я не могу просто разместить @Enumerated(EnumType.STRING)
на своем поле, так как это приводит к исключению.
Есть ли у меня какие-либо возможности, как я могу достичь этого желаемого поведения? Большое спасибо.
Попробуйте @MapKeyEnumerated (EnumType.STRING). http://stackoverflow.com/questions/25439813/difference-between-mapkey-mapkeycolumn-and-mapkeyjoincolumn-in-hibernate –
Да, это именно то, что я искал! Большое спасибо! – DruidKuma
Добро пожаловать, счастлив, что это помогает. –