【发布时间】:2016-12-13 06:09:57
【问题描述】:
我正在尝试创建一个实体,其中一个字段是带有 Enum 键的 Map:
public class MyEntity {
@ElementCollection
@CollectionTable(name="attributes", joinColumns=@JoinColumn(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)。 stackoverflow.com/questions/25439813/…
-
是的,这正是我想要的!非常感谢!
-
欢迎,很高兴它有帮助。
标签: java hibernate jpa dictionary enums