@JoinTable注释示例
当在JPA中映射多对多关系时,可以使用@JoinTable
注释来提供用于加入外键的表的配置:
|
|
以上示例中,EntityA与EntityB具有多对多关系,由entitiesB
字段实现,我们使用@JoinTable
注释来指定连接表的表名是table_join_A_B
,columns id_A
和 id_B
,外键分别引用EntityA
表和EntityB
表中的列ID; (id_A,id_B)
将是table_join_A_B
表的复合主键。
实体关系中的多重性
多重性有以下类型:
- One-to-one:每个实体实例与另一个实体的单个实例相关。
- One-to-many:实体实例可以与其他实体的多个实例相关。
- Many-to-one:实体的多个实例可以与另一个实体的单个实例相关。
- Many-to-many:实体实例可以与彼此的多个实例相关。
One-to-One Mapping
One-to-one mapping定义了与具有一对一多重性的另一实体的单值关联。 此关系映射使用对应的持久性属性或字段上的@OneToOne
注释。
示例:Vehicle
和ParkingPlace
实体。
One-to-Many Mapping
实体实例可以与其他实体的多个实例相关。
一对多关系使用对应的持久性属性或字段上的@OneToMany注释。
需要mappedBy元素来引用在相应实体中由ManyToOne注释的属性:
|
|
一对多关联需要映射实体集合。
Many-to-One Mapping
通过使用@ManyToOne
注释源实体(引用目标实体的属性)中的属性来定义多对一映射。
@JoinColumn(name="FK_name")
注释表示关系的前缀键。
Many-to-Many Mapping
实体实例可以与彼此的多个实例相关。
多对多关系在对应的持久性属性或字段上使用@ManyToMany
注释。
我们必须使用第三个表来关联两个实体类型(连接表)。
备注
实体之间的关系基础
外键可以是引用另一个表中唯一键(通常是主键)的一个或多个列。
外键和引用的主键必须具有相同的字段数和类型。
外键表示从一个表中的一列或多列到另一个表中的一列或多列的关系。