JPA 的基本注解
Posted 匿名道友
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPA 的基本注解相关的知识,希望对你有一定的参考价值。
1.首先说说注解的含义
@Entity
说明当前类是一个实体。
@Table(name="XXX")
设置对应表的表名。如果不写,则表名=类名。
@Column(name="XXX",length=xxx,nullable=(false/true),unique=(true/false))
设置对应表的字段名,注解应该写在属性的get方法上。如果不写@Column,则默认是:表里的字段名和属性名相同。
@GeneratedValue(strategy=GenerationType.AUTO)
@Id
对应数据表的主键,并设置主键的生成策略,我这里是用AUTO方式,还有其他方式,这里不一 一举例。
@Basic
把没有加@Column的属性自动的注解,并且设置成字段名=属性名。并且字段的长度也是默认最长的(例如:int =11,varchar=255)。
@Transient
如果实体类里有一个getxxx()的工具类,不需要映射为实例时,就需要加@Transient,否则ORM框架就默认其注解为@Basic。
@Temporal(TemporalType.xxx)
指定Date对象的精确度,比如
@Temporal(TemporalType.TIMESTAMP)设置精确到秒
@Temporal(TemporalType.DATE)设置精确到天
2.下面看看实际代码:
1 @Table(name="CUSTOMER") 2 @Entity 3 public class Customer { 4 private Integer id; 5 private String lastName; 6 private String email; 7 private int age; 8 9 private Date createdTime; 10 private Date birth; 11 12 //创建时间设置精确到秒 13 @Temporal(TemporalType.TIMESTAMP) 14 public Date getCreatedTime() { 15 return createdTime; 16 } 17 18 public void setCreatedTime(Date createdTime) { 19 this.createdTime = createdTime; 20 } 21 //生日设置精确到天 22 @Temporal(TemporalType.DATE) 23 public Date getBirth() { 24 return birth; 25 } 26 public void setBirth(Date birth) { 27 this.birth = birth; 28 } 29 @Column(name="id") 30 @GeneratedValue(strategy=GenerationType.AUTO) 31 @Id 32 public Integer getId() { 33 return id; 34 } 35 public void setId(Integer id) { 36 this.id = id; 37 } 38 @Column(name="Last_Name") 39 public String getLastName() { 40 return lastName; 41 } 42 public void setLastName(String lastName) { 43 this.lastName = lastName; 44 } 45 //默认为@Basic 46 public String getEmail() { 47 return email; 48 } 49 public void setEmail(String email) { 50 this.email = email; 51 } 52 //默认为@Basic 53 public int getAge() { 54 return age; 55 } 56 public void setAge(int age) { 57 this.age = age; 58 } 59 60 //工具类,不需要映射为数据表的一列 61 @Transient 62 public String getInfo() { 63 return "lastName:"+lastName+",email:"+email; 64 } 65 }
以上是关于JPA 的基本注解的主要内容,如果未能解决你的问题,请参考以下文章