Я пытаюсь использовать enum как mapkey для карты в Hibernate, но Hibernate хранит мое enum как 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 хранит перечисление в виде raw в базе данных вместо varchar:
"Column Name" "Data Type"
"COMPANY_ID" "NUMBER(19,0)"
"ACC_TYPE" "RAW"
"ACCOUNT_NO" "VARCHAR2(255 CHAR)"
Я хочу, чтобы это хранилось как varchar. Я пытался добавить @Enumerated (value = EnumType.STRING), но похоже, что это не работает на mapkey.