JPA基础(五):日期_枚举等字段类型的JPA映射

定于枚举类:

1 public enum Gender {
2 MAN,WOMAN
3 }


Person类:

 1 import java.util.Date;
2
3 import javax.persistence.Column;
4 import javax.persistence.Entity;
5 import javax.persistence.EnumType;
6 import javax.persistence.Enumerated;
7 import javax.persistence.GeneratedValue;
8 import javax.persistence.Id;
9 import javax.persistence.Table;
10 import javax.persistence.Temporal;
11 import javax.persistence.TemporalType;
12
13 @Entity
14 @Table(name="PersonTable")
15 public class Person {
16 @Id
17 @GeneratedValue
18 private Integer id;
19 @Column(length=10,nullable=false,name="personname")
20 private String name;
21 @Temporal(TemporalType.DATE)
22 private Date birthday;
23 @Enumerated(EnumType.STRING)
24 @Column(length = 5, nullable = false)
25 private Gender gender = Gender.MAN;
26 public Person(){}
27 public Person(String name) {
28 this.name = name;
29 }
30 public Integer getId() {
31 return id;
32 }
33 public void setId(Integer id) {
34 this.id = id;
35 }
36 public String getName() {
37 return name;
38 }
39 public void setName(String name) {
40 this.name = name;
41 }
42 public Date getBirthday() {
43 return birthday;
44 }
45 public void setBirthday(Date birthday) {
46 this.birthday = birthday;
47 }
48 public Gender getGender() {
49 return gender;
50 }
51 public void setGender(Gender gender) {
52 this.gender = gender;
53 }
54 }
  • @Table(name = "PersonTable") //改变数据库中映射表名
  • private Gender gender = Gender.MAN; //这里可以设置默认值, Gender是一个枚举类型。
  • @Enumerated(EnumType.STRING) //说明这个属性是个枚举类型,括号内的表示存入数据库的枚举字符串而不是枚举索引
  • @Temporal(TemporalType.DATE) //说明这个属性映射到数据库中是一个日期类型,括号中的是日期格式

对象是由Hibernate为我们创建的,当我们通过ID来获取某个实体的时候,这个实体给我们返回了这个对象的创建是由Hibernate内部通过反射技术来创建的,反射的时候用到了默认的构造函数,所以这时候必须给它提供一个public的无参构造函数。

你可能感兴趣的:(jpa)