一个老师有多个学生,一个学生也有多个老师,在实体类应该怎么写
时间: 2024-03-05 21:51:30 浏览: 9
这是一个典型的多对多关联关系,可以通过中间表来实现。中间表一般包含两个字段,分别是对应两个实体类的主键,用于建立关联关系。
在实体类中,可以定义出对应的中间表,然后使用@ManyToMany注解来标注多对多关联关系。例如,假设一个老师可以带多个学生,一个学生可以被多个老师带,可以定义如下实体类:
```java
@Data
public class Teacher {
private Long id;
private String name;
@TableField(exist = false)
@JsonIgnore
@ManyToMany(targetEntity = Student.class, cascade = CascadeType.ALL)
@JoinTable(name = "teacher_student",
joinColumns = {@JoinColumn(name = "teacher_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "student_id", referencedColumnName = "id")})
private List<Student> students;
}
@Data
public class Student {
private Long id;
private String name;
@TableField(exist = false)
@JsonIgnore
@ManyToMany(targetEntity = Teacher.class, cascade = CascadeType.ALL)
@JoinTable(name = "teacher_student",
joinColumns = {@JoinColumn(name = "student_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "teacher_id", referencedColumnName = "id")})
private List<Teacher> teachers;
}
```
在注解中,targetEntity指定了关联的实体类,cascade表示级联操作,JoinTable表示中间表的相关信息。这样,在查询时,就可以通过Teacher对象的students属性或者Student对象的teachers属性来获取对应的学生或老师了。