我有@ManyToMany相关的实体结构,名为Student和Course。我希望一个学生能够注册最多3门课程。同时,一门课程必须有最多10个学生。我该怎么做呢?(我也在使用mySql数据库和休眠)
这是我的学生类;
@Entity
@NoArgsConstructor
@Getter
@Setter
public class Student extends BaseEntity {
private String name;
private String surname;
@Column(name = "student_number",unique = true)
private String number; //student number
@JsonIgnore
@ManyToMany(cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
@JoinTable(name = "students_courses", joinColumns = @JoinColumn(name = "student_id"),
inverseJoinColumns = @JoinColumn(name = "course_id"))
private List<Course> courseList = new ArrayList<>();
}
课程类别;
@Entity
@Getter
@Setter
public class Course extends BaseEntity{
@Column(name = "course_name",unique = true)
private String courseName;
@JsonIgnore
@ManyToMany(mappedBy = "courseList",cascade = CascadeType.ALL ,fetch = FetchType.EAGER)
private List<Student> studentList = new ArrayList<>();
}
存储库;
第一个
2条答案
按热度按时间rekjcdws1#
给定一个实现
StudentRepository
的对象studentRepository
,你可以通过idStudent student = studentRepository.findById(studentId)
得到student(假设你的BaseEntity
中有一个id,我认为是有的)。然后,您可以测试
student.courseList.size()<=MAX_NUMBER_OF_COURSES
,例如,在保存studentRepository.save(student)
或其他内容之前。同样的逻辑也可以应用到课程中。不确定JPA和/或Sping Boot 中是否有更惯用的东西。
brqmpdu12#
谢谢你的回复。我做了这样的事情,它的工作学生。
我在StudentServiceImp中编写了这段代码;
但是我不能为课程类添加数据。因为我可以在ManyToMany关系中从一边添加数据。你有解决这个问题的方法吗?