zoukankan      html  css  js  c++  java
  • 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);
        }
    
    }

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

  • 相关阅读:
    XStream教程
    Log4j教程
    Java.io包
    Java输入/输出教程
    Java.math.BigDecimal.abs()方法
    数据类型转换
    JUnit教程
    java.lang
    标识符
    PHP面向对象笔记解析
  • 原文地址:https://www.cnblogs.com/redcool/p/6507133.html
Copyright © 2011-2022 走看看