1. 首页
  2. 软件开发
  3. SpringData——JPA映射双向一对多、一对一、多对多的关联关系

SpringData——JPA映射双向一对多、一对一、多对多的关联关系

  • 发布于 2024-08-17
  • 1 次阅读

在JPA中,双向一对多、一对一和多对多是常见的关联关系,用于描述实体之间的复杂关系。

1. 双向一对多关系

一个部门有多个员工,员工也属于一个部门。Department实体类中有一个List属性存储员工列表,Employee实体类中有一个Department属性表示所属部门。

Department实体类:

@Entity
public class Department {
   
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    @OneToMany(mappedBy = "department")
    private List<Employee> employees;
    
}

Employee实体类:

@Entity
public class Employee {
   
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    @ManyToOne
    private Department department;
    
   
}

2. 一对一关系

一个人只有一个身份证,身份证也只属于一个人。Person实体类中有一个IDCard属性表示身份证,IDCard实体类中有一个Person属性表示持有者。

Person实体类:

@Entity
public class Person {
   
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    @OneToOne
    private IDCard idCard;
    
}

IDCard实体类:

@Entity
public class IDCard {
   
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String cardNumber;
    
    @OneToOne(mappedBy = "idCard")
    private Person person;
    
}

3. 多对多关系

多个学生可以选择多门课程,课程也可以被多个学生选择。Student实体类和Course实体类之间建立多对多关系。

Student实体类:

@Entity
public class Student {
   
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    @ManyToMany
    private List<Course> courses;
    
}

Course实体类:

@Entity
public class Course {
   
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    @ManyToMany(mappedBy = "courses")
    private List<Student> students;
    
}

原文链接: https://blog.csdn.net/2401_82884096/article/details/137006217