JPA中的实体类中的字段可以使用以下注解进行映射:
- @Id:定义一个实体的主键属性。
- @GeneratedValue:定义主键的生成策略,如AUTO、IDENTITY、SEQUENCE等。
- @Column:定义属性和列的映射关系,可以指定列名、长度、唯一性等。
- @Temporal:定义日期属性的映射格式。
- @Enumerated:定义枚举属性的映射格式。
- @Lob:定义大对象类型属性的映射格式。
- @Transient:定义一个非映射属性。
一个简单的例子:
@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;
@Lob
private byte[] content;
@Transient
private String temp;
}
可以看出,上述User实体类的字段使用了@Id、@GeneratedValue、@Column、@Temporal、@Enumerated、@Lob和@Transient等注解进行映射。
- @Id和@GeneratedValue注解id字段作为主键
- @Column注解name字段与数据库的name列映射
- @Temporal注解birthday字段映射到日期格式的列
- @Enumerated注解gender字段映射枚举类型
- @Lob注解content字段映射到大对象列
- @Transient注解temp字段,标识其为非映射字段