如何与JPA创建ENUM数组列?



我想在我的PostgreSQL数据库中有一个字符串数组,并在我的代码中将它们转换为一组enum对象。这是我的文件:

@ElementCollection(fetch = FetchType.EAGER, targetClass = CurrencyDto.class)
@Enumerated(EnumType.STRING)
private Set<CurrencyDto> currencyOptions;

但是,它试图从另一个表中获取它,出现这个错误relation "theme_config_currency_options" does not exist

我不希望JPA从另一个表中获取它。枚举对象的字符串表示形式应该在数组内的那一列中。我的枚举类为CurrencyDto

public enum CurrencyDto {
ALL, //Albania
AMD, //Armenia
AZN, //Azerbaijan
BYN, //Belarus
BAM, //Bosnia and Herzegovina
BGN, //Bulgaria
...
}

怎样才能达到我想要的?

首先,您需要添加完成这项工作所需的依赖项。然后您应该为货币创建DTO类,

@Entity
public class Currency {
@Id
private int id;
private String title;
}

public enum CurrencyName {
C1, C2, C3, C4;
}

现在,通过使用这个类,您可以设置货币名称,并可以从数据库中获取数据。

  1. 实体应该像
@Builder
@Entity
@Table(name = "entity_name")
@TypeDef(name = "json", typeClass = JsonType.class)
public class EntityName {

@Builder.Default
@Enumerated(EnumType.STRING)
@Type(type = "json")
private Set<CurrencyDto> currencyOptions = new HashSet<>();
}
  1. 为"entityname"表
currency_options JSONB NOT NULL DEFAULT '[]'::jsonb

最新更新