我需要有关在 JPA2 中存储映射的帮助,其中键和值都是枚举 (Map<Enum, Enum>
)。使用 Hibernate 作为我的 JPA 提供程序,它将枚举存储为 blob,但我需要将数据存储为字符串。我尝试了以下注释来解决这个问题:
@ElementCollection(fetch = FetchType.EAGER)
@MapKeyEnumerated(value = EnumType.STRING)
public Map<Enum, Enum> getElementsMap() {
return elementsMap;
}
但是数据仍然作为 blob 存储在数据库中。有人解决过这个问题吗?
最佳答案
@Enumerated 用于定义值的类型。以下映射到表,其中键和值的列都是 varchars,枚举的名称将被保存:
@Enumerated(EnumType.STRING)
@ElementCollection(fetch = FetchType.EAGER)
@MapKeyEnumerated(value = EnumType.STRING)
public Map<MyEnum, MyOtherEnum> elementsMap = new HashMap<>();
大致会产生下表:
[NAME_OF_ENTITY]_ELEMENTSMAP (
NAME_OF_ENTITY_ID INTEGER,
ELEMENTSMAP VARCHAR(255),
ELEMENTSMAP_KEY VARCHAR(255)
)
关于java - 将 Map<Enum, Enum> 存储为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10257502/