javax.persistence Annotations

要查看所有 javax.persistence 的注解,前往 Oracle 官方文档,查看 Annotation Types Summary 一栏即可。

Spring Data JPA 常用 javax.persistence 注解:

AnnotationDescriptionExample

@Entity

指出该 Java 类为实体类,将映射到指定的数据库表。

@Entity

@Table

当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用。

@Table(name = "my_table_name")

@Column

当实体的属性与其映射的数据库表的列不同名时需要使用 @Column 标注说明。

@Column(name = "my_column_name", nullable = true, length = 30)

@Basic

如果没有特别标注,则实例域默认被标记为 @Basic,表示该实例域需要映射到数据表中。

@Transient

如果不想持久化某个实例域(例如仅用于某个内部方法),那么标记 @Transient 以使 JPA 忽略该属性,否则会自动标记实例域为 @Basic

@Transient

@Id

声明该实例域为主键。

@Id

@GeneratedValue

用于指定主键的生成策略。默认情况下 Spring Data JPA 会自动选择最适合底层数据库的主键生成策略。 AUTO: 自动选择合适的策略,是默认选项 IDENTITY: 采用数据库 ID 自增长的方式来自增主键字段,Oracle 不支持这种方式 SEQUENCE: 通过序列产生主键,通过 @SequenceGenerator 注解指定序列名,MySql 不支持这种方式 TABLE: 通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。

@GeneratedValue(strategy = GenerationType.AUTO)

@Temporal

在核心的 Java API 中并没有定义 Date 类型的精度(temporal precision)。而在数据库中,表示 Date 类型的数据有 DATE, TIME, 和 TIMESTAMP 三种精度(即单纯的日期,时间,或者时间戳)。

@Temporal(TemporalType.TIMESTAMP)

@OneToOne

一对一声明

@OneToMany

一对多声明

@ManyToOne

多对一声明

@ManyToMany

多对多声明

@JoinColumn

@JoinTable

@MapsId

@Query

见 Using @Query

@Modifying

见 Modifying

最后更新于