JPA中的实体类可以使用以下主要注解进行映射:
- @Entity:定义一个实体类。
- @Table:定义实体类和表的映射关系,可以指定表名等。
- @Id:定义一个实体的主键属性。
- @GeneratedValue:定义主键的生成策略,如AUTO、IDENTITY、SEQUENCE等。
- @Column:定义属性和列的映射关系,可以指定列名、长度、唯一性等。
- @Temporal:定义日期属性的映射格式。
- @Enumerated:定义枚举属性的映射格式。
- @Lob:定义大对象类型属性的映射格式。
- @Transient:定义一个非映射属性。
- @OneToOne、@OneToMany、@ManyToOne:定义对象关系映射。
- @Embedded、@Embeddable:定义嵌入对象的映射。
- @MappedSuperclass:定义父类的映射信息。
一个简单的例子:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name", length = 32)
private String name;
@Temporal(TemporalType.DATE)
private Date birthday;
@Enumerated(EnumType.STRING)
private Gender gender;
@OneToOne
@JoinColumn(name = "address_id")
private Address address;
@Transient
private String temp;
}
可以看出,上述User实体类使用了@Entity、@Table、@Id、@GeneratedValue、@Column、@Temporal、@Enumerated、@OneToOne等注解进行映射。