jpa实体关系-一对多
程序员文章站
2022-04-23 15:51:44
...
jpa实体关系-一对多
双向一对多映射
如一个Department
中有多个Employeem
,而一对多的关系往往是双向的
@Entity
public class Employeem {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
@ManyToOne
@JoinColumn(name = "dept_id") //关系拥有者,在employeem表中有dept_id字段
private Department department;
//getter & setter omit..
}
@Entity
public class Department {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String departName;
//mappedBy指向关系拥有者中的Department属性
@OneToMany(mappedBy = "department", fetch = FetchType.EAGER)
private List<Employeem> employeems;
}
生成的表结构:
mysql> desc department;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| depart_name | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+-------+
2 rows in set
mysql> desc employeem;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(255) | YES | | NULL | |
| dept_id | int(11) | YES | MUL | NULL | |
+---------+--------------+------+-----+---------+-------+
3 rows in set
当定义双向一对多(或者多对一)的时候,两个重要点:
- 多对一方是关系所有方,所以在那一方定义联接列(
@JoinColumn
) - 一对多方是反方,所以必须使用
mappedBy
元素
推荐阅读
-
JPA中实现双向多对多的关联关系(附代码下载)
-
JPA中实现双向一对多的关联关系
-
JPA中实现双向一对一的关联关系
-
JPA中实现单向一对多的关联关系
-
SpringDataJpa在一对多、多对多关系映射时出现*Error
-
Mybatis04—注解开发实现CRUD以及实现一对一、一对多及多对多复杂关系映射
-
Mybatis常用的注解开发CRUD&&复杂关系映射(一对一,一对多)&&mybatis 基于注解的二级缓存
-
Mybatis使用注解实现一对多复杂关系映射
-
JPA中映射关系详细说明(一对多,多对一,一对一、多对多)、@JoinColumn、mappedBy说明
-
mybatis配置多对一或一对一关系