映射列值以枚举第一个参数

时间:2018-02-19 12:19:43

标签: java jpa enums entity

我在数据库String列中有值

0101
0111 
1110

我想在我的实体中创建枚举并添加值。

public enum MyEnum{
  NEW("0101","created new"), 
  SUCCESS("0111", "created success), 
  ERROR("1110", "created with error");
}

我希望通过MyEnum的第一个参数从DB中映射值,并在我的代码中获取第二个参数。像这样:

hz.getMyEnum().value() // I need return created new or created success

2 个答案:

答案 0 :(得分:0)

不幸的是,jpa目前(直到2.1)不支持映射到枚举范围的变量

你可以:

1-将值存储为0101,0111,1110而不是@Converter <Enum,String>

2-保持原样

3-(灵感来自Kovacs答案)你可以创建一个CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y CONFIG_USB_EHCI_HCD_OMAP=y CONFIG_USB_USBNET=y CONFIG_USB_NET_SMSC95XX=y CONFIG_NETWORK_FILESYSTEMS=y CONFIG_ROOT_NFS=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y CONFIG_IP_PNP_RARP=y CONFIG_USB=y CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_EHCI=y CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_NFS_V3_ACL=y 并插入对应于枚举的字符串变量名,反之亦然......唯一要考虑的是这个转换器将紧密耦合到你的枚举

答案 1 :(得分:0)

我知道问题是关于JPA的 - 另一个答案是正确的,JPA 2.1不支持这种映射......但是jOOQ通过org.jooq.impl.EnumConverter支持它没有问题,请参阅{{3} }