我正在尝试使用枚举作为Hibernate中地图的mapkey,但Hibernate将我的枚举存储为RAW:
我有这个枚举:
public enum AccountType implements Serializable {
CASH,
CREDIT_CARD,
GIRO,
INVOICE,
OTHER;
}
我正在尝试将其用作地图中的关键字:
@CollectionOfElements
@MapKey(columns = @Column(name="ACC_TYPE"),
targetElement = AccountType.class)
@Column(name="ACCOUNT_NO")
public Map<AccountType, String> getAccounts() {
return accountMap;
}
这里发生的是Hibernate将枚举存储为数据库而不是varchar:
"Column Name" "Data Type"
"COMPANY_ID" "NUMBER(19,0)"
"ACC_TYPE" "RAW"
"ACCOUNT_NO" "VARCHAR2(255 CHAR)"
我希望将其存储为varchar。我试图添加@Enumerated(value = EnumType.STRING),但看起来这对mapkey不起作用。
答案 0 :(得分:1)
答案 1 :(得分:0)
有@MapKeyEnumerated JPA注释,但是从Hibernate核心3.6.5开始,它似乎没有做太多改变生成的DDL类型。我仍然看到原始:(