【发布时间】:2010-10-15 10:51:04
【问题描述】:
我正在尝试将枚举用作 Hibernate 中映射的映射键,但 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),但它似乎不适用于映射键。
【问题讨论】: