hibernate 属性定义为Enum型

来源:互联网 发布:mac os x 升级 编辑:程序博客网 时间:2024/06/05 01:12

一、直接使用枚举类(不推荐)

1.定义枚举类 Gender

public enum Gender {    MALE(0, "男"),    FEMALE(1, "女");    private Integer constant;    private String message;    private Gender(Integer constant, String message) {        this.constant = constant;        this.message = message;    }    public Integer getConstant() {        return constant;    }    public void setConstant(Integer constant) {        this.constant = constant;    }    public String getMessage() {        return message;    }    public void setMessage(String message) {        this.message = message;    }}

2.定义实体类 Teacher

@Entity@Table(name = "t_teacher")public class Teacher {    public Teacher() {    }    public Teacher(String name, Gender gender) {        this.name = name;        this.gender = gender;    }    @Id    @GeneratedValue(strategy = GenerationType.AUTO)    private Integer id;    @Column    private String name;    @Column    private Gender gender;    @OneToMany(fetch = FetchType.LAZY, mappedBy = "id")    @OrderBy(value = "id")    private List<Course> courseList;     // 此处 省略getter和setter方法}

3.插入数据

@Service("queryService")public class QueryService extends BaseDao {    private Session session;    @Before    public void init() {        ApplicationContext context = new ClassPathXmlApplicationContext("spring/applicationContext.xml");        session = ((QueryService) context.getBean("queryService")).getSession();        Assume.assumeTrue(true);    }    @Test    @Transactional    public void insertDatas() {        Teacher teacher01 = new Teacher("王可可", Gender.MALE);        Teacher teacher02 = new Teacher("李小丽", Gender.FEMALE);        session.save(teacher01);        session.save(teacher02);    }}
为了便于测试,我使用了Junit,在这里执行insertDatas方法

4.查看数据库

idnamegender1王可可02李小丽1

5.结论

      hibernate中直接使用Enum作为实体类的字段类型,数据库中该字段会按照Enum值的顺序(从0开始)存储数据。
      例:Gender的定义顺序是 >MALE  >FEMALE, 所以MALE对应值(0),FEMALE对应值(1)。

二、使用枚举值的名称

  1.修改实体类  Teacher

@Entity@Table(name = "t_teacher")public class Teacher {    public Teacher() {    }    public Teacher(String name, Gender gender) {        this.name = name;        this.gender = gender;    }    @Id    @GeneratedValue(strategy = GenerationType.AUTO)    private Integer id;    @Column    private String name;    @Column    @Enumerated(EnumType.STRING)    private Gender gender;    @OneToMany(fetch = FetchType.LAZY, mappedBy = "id")    @OrderBy(value = "id")    private List<Course> courseList;     // 省略 setter和getter方法}
 枚举类的注解增加 @Enumerated(EnumType.STRING)。

2.插入数据(同方案一 步骤3)

3.查看数据库


0 0
原创粉丝点击