javax.persistence Annotations
最后更新于
最后更新于
要查看所有 javax.persistence
的注解,前往 ,查看 Annotation Types Summary 一栏即可。
Spring Data JPA 常用 javax.persistence
注解:
@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