如何在休眠中将列类型字符串映射为枚举

时间:2019-02-28 08:16:28

标签: java hibernate jpa

我正在使用Postgres和Spring Data。 实体外观如下:

public class Market {

@Id
@GeneratedValue
private Long id;

/**
 * aka first currency
 */
@NotNull
@Enumerated(EnumType.STRING)
private Currency baseCurrency;

/**
 * aka second currency
 */
@NotNull
@Enumerated(EnumType.STRING)
private Currency quoteCurrency;
...

我在

中有以下查询
@Query(value = "SELECT BASE_CURRENCY FROM MARKETS UNION SELECT QUOTE_CURRENCY FROM MARKETS", nativeQuery = true)
Set<Currency> findAllSupportedCurrencies();

货币是枚举

public enum Currency {
EUR(false),
USD(false),
PLN(false),
BTC(true),
LTC(true),
ETH(true),

...

当我执行以下步骤时,运行时会出现问题

//        When
    Set<Currency> output = marketRepository.findAllSupportedCurrencies();
    for(Currency currency : output){
        System.out.println(currency);
    }

我得到Cast异常。。有什么想法,如何在不使用Currency.valueOf(...)的情况下将映射字符串适当地枚举吗?

0 个答案:

没有答案