栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将JPA中的枚举映射为固定值?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将JPA中的枚举映射为固定值?

对于JPA 2.1之前的版本,JPA仅提供两种方法来按枚举name或按枚举处理枚举

ordinal
。而且标准的JPA不支持自定义类型。所以:

  • 如果要进行自定义类型转换,则必须使用提供程序扩展(带有Hibernate UserType,Eclipselink Converter等)。(第二个解决方案)。〜或〜
  • 你必须使用
    @PrePersist
    @PostLoad
    技巧(第一个解决方案)。〜或〜
  • 注释
    getter
    setter
    获取并返回
    int
    值〜或〜
  • 在实体级别使用整数属性,并在
    getter
    setter
    中执行转换。

我将说明最新的选项(这是一个基本实现,请根据需要进行调整):

@Entity@Table(name = "AUTHORITY_")public class Authority implements Serializable {    public enum Right {        READ(100), WRITE(200), EDITOR (300);        private int value;        Right(int value) { this.value = value; } public int getValue() { return value; }        public static Right parse(int id) { Right right = null; // Default for (Right item : Right.values()) {     if (item.getValue()==id) {         right = item;         break;     } } return right;        }    };    @Id    @GeneratedValue(strategy = GenerationType.AUTO)    @Column(name = "AUTHORITY_ID")    private Long id;    @Column(name = "RIGHT_ID")    private int rightId;    public Right getRight () {        return Right.parse(this.rightId);    }    public void setRight(Right right) {        this.rightId = right.getValue();    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392706.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号