首页 > 代码库 > JPA学习---第五节:日期和枚举等字段类型的JPA映射

JPA学习---第五节:日期和枚举等字段类型的JPA映射

1、在上一节可在数据库中看到创建出来的表和字段,是通过 Entity bean 来创建的,而创建表名和字段名的规则是怎样的?

有类,代码如下:

package learn.jpa.bean;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;@Entitypublic class Person {    @Id    @GeneratedValue    private Integer id;    private String name;        public Person(){}        public Person(String name){        this.name = name;    }        public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

表名:是根据 Entity 的名称来命名的

字段:是根据属性名称来命名的

private Integer id;
private String name;

以上的 id 和 name 是称之为字段, getId() 和 setId() 中的 id 称之为属性。

2、更改表名和字段名或长度,如下代码所示:

package learn.jpa.bean;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="t_person")public class Person {    @Id    @GeneratedValue    private Integer id;    @Column(length=64,name="personName",nullable=false)    private String name;        public Person(){}        public Person(String name){        this.name = name;    }        public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

3、日期和枚举型字段的映射,代码如下:

实体类:

package learn.jpa.bean;import java.util.Date;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.EnumType;import javax.persistence.Enumerated;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import javax.persistence.Temporal;import javax.persistence.TemporalType;@Entity@Table(name="t_person")public class Person {    @Id                //@Id用于标记属性的主键    @GeneratedValue    private Integer id;    @Column(length=64,name="personName",nullable=false)    private String name;    // TemporalType.DATE 表示日期格式 例:2014-10-01    // TemporalType.TIME 表示时间格式  例:12:21:34    // TemporalType.TIMESTAMP 表示日期加时间格式  例:2014-10-01 12:21:34    @Temporal(TemporalType.DATE)    private Date brithday;    // @Enumerated 注解枚举型       // EnumType.STRING 表示保存到数据库的值是 MAN or WOMEN    // EnumType.ORDINAL 表示保存到数据库的值是 MAN 和 WOMEN 所设置的索引值    @Enumerated(EnumType.STRING)    @Column(length=5, nullable=false)    private Gender gender;        public Person(){}        public Person(String name){        this.name = name;    }        public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Date getBrithday() {        return brithday;    }    public void setBrithday(Date brithday) {        this.brithday = brithday;    }    public Gender getGender() {        return gender;    }    public void setGender(Gender gender) {        this.gender = gender;    }    }

枚举类:

package learn.jpa.bean;/** *  * @doc        性别枚举型 * */public enum Gender {    MAN,WOMEN;}

说明:

1、TemporalType.DATE 表示日期格式 例:2014-10-01
2、TemporalType.TIME 表示时间格式  例:12:21:34
3、TemporalType.TIMESTAMP 表示日期加时间格式  例:2014-10-01 12:21:34

@Enumerated 注解枚举型  
1、EnumType.STRING 表示保存到数据库的值是 MAN or WOMEN
2、EnumType.ORDINAL 表示保存到数据库的值是 MAN 和 WOMEN 所设置的索引值

JPA学习---第五节:日期和枚举等字段类型的JPA映射