博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JPA注解@Enumerated映射枚举字段
阅读量:5934 次
发布时间:2019-06-19

本文共 1959 字,大约阅读时间需要 6 分钟。

在javax.persistence包中有这么两个注解@Enumerated,@EnumType

*/@Target({METHOD, FIELD})@Retention(RUNTIME)public @interface Enumerated {    /** (Optional) The type used in mapping an enum type. */    EnumType value() default ORDINAL;}public enum EnumType {    /** 持久枚举类型字段为整数,元素一般从0开始索引. */    ORDINAL,    /** 持久枚举类型为字符串. */    STRING}复制代码

当我需要持久化一个枚举类字段的时候,就可以用@Enumerated来标注枚举类型。来举个栗子:

数据库中有一张employee表

对应的Employee实体

@Entity@Table(name = "employee", schema = "public")@Data@Builder@AllArgsConstructor@NoArgsConstructorpublic class Employee {    @Id    @GeneratedValue    @Column(name = "id")    private Long id;    @Column(name = "name")    private String name;    @Column(name = "sex")    @Enumerated(EnumType.ORDINAL)//性别字段持久化为0,1    private Sex sex;    @Column(name = "type")    @Enumerated(EnumType.STRING)//枚举字符串    private Type type;}复制代码

Sex枚举类:

public enum Sex {    MAIL("男"),    FMAIL("女");    private String value;    private Sex(String value) {        this.value = value;    }}复制代码

Type枚举类:

public enum Type {    PROGRAMMER("开发"),    PM("项目经理"),    TESTERS("测试"),    UI("妹子"),    ;    private String type;    private Type(String type) {    }}复制代码

那现在我们来看一下插入几条数据看下是什么效果。

EmployeeRepostory employeeRepostory = context.getBean(EmployeeRepostory.class);Employee fireYao = Employee.builder().name("fireYao").sex(Sex.MAIL).type(Type.PROGRAMMER).build();Employee gakki = Employee.builder().name("gakki").sex(Sex.FMAIL).type(Type.UI).build();Employee whoever = Employee.builder().name("whoever").sex(Sex.FMAIL).type(Type.PM).build();employeeRepostory.save(Arrays.asList(fireYao,gakki,whoever));复制代码

插入数据后,数据库中:

可以看到,sex字段被持久化为0,1这样的int字段,因为在sex字段上标注了@Enumerated(EnumType.ORDINAL),那这样持久化到数据库时,就会根据枚举类中的字段,依次从0开始标记,Sex中MAIL("男")就为0,FMAIL("女")就为1依次增加。

在type字段上标注了@Enumerated(EnumType.STRING),就直接根据枚举类的字段字符串来自动持久化到数据库。

如果枚举字段上不加注解,那么枚举字段就会被默认映射为 int 类型存储。

那现在我们来看查询一下的结果。

List
all = employeeRepostory.findAll();复制代码

可以看到,查询出来的结果中sex字段又自动还原成了Sex枚举字段。


原文链接:

转载地址:http://mjntx.baihongyu.com/

你可能感兴趣的文章
梅耶尔将对雅虎“开刀”:裁员15%,关闭部分业务
查看>>
小网站架构优化-提升抗并发能力:子应用程序分离方案
查看>>
澳大利亚初创公司SalesPreso获得200万美元种子投资
查看>>
运营商的“大网”怎么建? 三大运营商纷纷SDN/NFV三步走
查看>>
通辽智慧城市建设总体规划和顶层设计专家评审会召开
查看>>
未来营销闯关标配:大数据+智能硬件
查看>>
互动性可视化,打通大数据最后一公里
查看>>
为什么媒体如此惧怕 Facebook?
查看>>
我眼中的性能测试工程师
查看>>
台积电与ARM合作开发7纳米芯片 或用于iPhone 8
查看>>
大数据窥探:关于大数据的15条干货思考
查看>>
随谈10年的技术生涯和技术成长
查看>>
《交互式程序设计 第2版》一1.1 本书读者对象
查看>>
各省光伏十三五规划汇总:总规模将超130GW
查看>>
《大数据时代》作者:当下数据隐私保护方式是完全错误的
查看>>
光伏亟待资本注入 业界呼吁第三方“风险评级”
查看>>
2016年网络安全的五大发展趋势
查看>>
郑州成立中原大数据产业联盟
查看>>
MySQL命令行导出数据库
查看>>
“想哭”之余的追问 IEEE数名专家多角度剖析勒索病毒事件
查看>>