JPA中的实体类可以使用哪些注解进行映射?

JPA中的实体类可以使用以下主要注解进行映射:

  1. @Entity:定义一个实体类。
  2. @Table:定义实体类和表的映射关系,可以指定表名等。
  3. @Id:定义一个实体的主键属性。
  4. @GeneratedValue:定义主键的生成策略,如AUTO、IDENTITY、SEQUENCE等。
  5. @Column:定义属性和列的映射关系,可以指定列名、长度、唯一性等。
  6. @Temporal:定义日期属性的映射格式。
  7. @Enumerated:定义枚举属性的映射格式。
  8. @Lob:定义大对象类型属性的映射格式。
  9. @Transient:定义一个非映射属性。
  10. @OneToOne、@OneToMany、@ManyToOne:定义对象关系映射。
  11. @Embedded、@Embeddable:定义嵌入对象的映射。
  12. @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等注解进行映射。