• hibernate enum映射详解


    hibernate enum映射详解

    在这里介绍注解的形式,如果想要了解XML配置的方式,可以自行查找相关资料。

    例如以下Entity

    @Entity
    @Table(name = "t_user")
    public class User implements Serializable {
        /**
         * 
         */
        private static final long serialVersionUID = -9042615274714038279L;
    
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
    
        @Column(name = "name")
        private String name;
    
        @Column(name = "password")
        private String password;
    
        @Column(name = "age")
        private Integer age;
    
        @Column(name = "gender")
        //@Convert(converter = Genderconverter.class) //属性类型转换器,该配置映射到数据库后是自定的类型,例如保存性别是保存M/F,男/女
        //@Enumerated(EnumType.ORDINAL) //该配置映射保存到数据库后保存的是序号,从0开始
        //@Enumerated(EnumType.STRING) //该配置映射保存到数据后保存的String类型,例如MALE/FEMALE等
        private Gender gender;
        
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name == null ? null : name.trim();
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password == null ? null : password.trim();
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
        
        public Gender getGender() {
            return gender;
        }
    
        public void setGender(Gender gender) {
            this.gender = gender;
        }
    
        @Override
        public String toString() {
            return "User[id=" + id + ", name=" + name + ",age=" + age + ", gender=" + gender + "]";
        }
    }

    Gender

    /**
     * 性别
     * @author daniel.zhao
     *
     */
    public enum Gender {
        
        MALE("M"),
        FEMALE("F");
        
        private String code;
        
        private Gender(String code) {
            this.code = code;
        }
        
        public String getCode() {
            return code;
        }
        
        public void setCode(String code) {
            this.code = code;
        }
        
        public static Gender fromString(String code) {
            Objects.requireNonNull(code, "Gender code must not be null!");
            if (Gender.MALE.code.equals(code)) {
                return Gender.MALE;
            }
            if (Gender.FEMALE.code.equals(code)) {
                return Gender.FEMALE;
            }
            return null;
        }
    }

    GenderConverter

    @Converter
    public class Genderconverter implements AttributeConverter<Gender, String> {
    
        @Override
        public String convertToDatabaseColumn(Gender attribute) {
            return attribute.getCode();
        }
    
        @Override
        public Gender convertToEntityAttribute(String dbData) {
            return Gender.fromString(dbData);
        }
    
    }

    使用以上方法可以映射保存对应的枚举类型到数据表中。

  • 相关阅读:
    【字符编码】字符编码 && Base64编码算法
    【JVM】JVM系列之执行引擎(五)
    【JVM】JVM系列之类加载机制(四)
    【JVM】JVM系列之Class文件(三)
    【知识积累】DES算法之C#加密&Java解密
    appium多机并行测试
    Jenkins 传递自定义的参数
    python对ftp进行操作
    Linux下ftp服务器搭建
    appium +ios 判断元素是否存在,排除visible=“false”的数据
  • 原文地址:https://www.cnblogs.com/redcool/p/6507133.html
Copyright © 2020-2023  润新知