Spring Data JPA实体关系映射
2023-12-19 23:26:43
一对一关系映射
一对一关系映射表示一对一的关系,即一个实体可以与另一个实体相关联,而另一个实体只能与该实体相关联。在Spring Data JPA中,我们可以使用@OneToOne
注释来定义一对一关系。
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
private String name;
@OneToOne(mappedBy = "person")
private Address address;
}
@Entity
public class Address {
@Id
@GeneratedValue
private Long id;
private String street;
private String city;
private String state;
private String zipCode;
@OneToOne
private Person person;
}
在上面的示例中,Person
和Address
实体类之间存在一对一的关系。Person
实体类中的address
属性被注释为@OneToOne(mappedBy = "person")
,这表示Person
实体类中的address
属性与Address
实体类中的person
属性相关联。Address
实体类中的person
属性被注释为@OneToOne
,这表示Address
实体类中的person
属性与Person
实体类中的address
属性相关联。
一对多关系映射
一对多关系映射表示一对多的关系,即一个实体可以与多个实体相关联,而多个实体只能与一个实体相关联。在Spring Data JPA中,我们可以使用@OneToMany
注释来定义一对多关系。
@Entity
public class Department {
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "department")
private List<Employee> employees;
}
@Entity
public class Employee {
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToOne
private Department department;
}
在上面的示例中,Department
和Employee
实体类之间存在一对多关系。Department
实体类中的employees
属性被注释为@OneToMany(mappedBy = "department")
,这表示Department
实体类中的employees
属性与Employee
实体类中的department
属性相关联。Employee
实体类中的department
属性被注释为@ManyToOne
,这表示Employee
实体类中的department
属性与Department
实体类中的employees
属性相关联。
多对多关系映射
多对多关系映射表示多对多的关系,即一个实体可以与多个实体相关联,而多个实体也可以与多个实体相关联。在Spring Data JPA中,我们可以使用@ManyToMany
注释来定义多对多关系。
@Entity
public class Course {
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToMany
private List<Student> students;
}
@Entity
public class Student {
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToMany(mappedBy = "students")
private List<Course> courses;
}
在上面的示例中,Course
和Student
实体类之间存在多对多的关系。Course
实体类中的students
属性被注释为@ManyToMany
,这表示Course
实体类中的students
属性与Student
实体类中的courses
属性相关联。Student
实体类中的courses
属性被注释为@ManyToMany(mappedBy = "students")
,这表示Student
实体类中的courses
属性与Course
实体类中的students
属性相关联。