我正在尝试实现分页。我有两张桌子,一位老师和一位学生。对于每个老师,都有多个学生。现在我得到了一个TeacherNames的列表,对于每个老师,我必须找到它的所有学生并将他们添加到列表中,最后返回它。我得到的页码和大小也作为输入。
List<TeacherEntity> teacher = TeacherRepo.findByName(TeacherNames);
Teachers.forEach(teacher - > {
List<Student> students = studentRepo.findByTeacherName(teacher);
studentDTO.addAll(students);
});
return StudentDTO;如果我只能在teachersRepo中查询,我知道如何实现分页。但是我不知道当有嵌套的时候我该怎么做。
发布于 2020-09-26 01:00:37
我假设你在学生和老师之间有@ManyToMany关系。如果不是,则必须先创建一个,然后再继续。创建关系的示例代码
public class Teacher
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long teacherId;
//some fields
@ManyToMany(fetch=FetchType.EAGER,cascade = CascadeType.ALL)
@JoinTable(name = "teacher_student", joinColumns = {
@JoinColumn(name = "teacherId", referencedColumnName = "techerId") }, inverseJoinColumns = {
@JoinColumn(name = "studentId", referencedColumnName = "studentId") })
@BatchSize(size = 20)
private Set<Stident> students = new HashSet<>();
//Get and set
}现在,在教师存储库中,添加一个在学生和教师之间进行连接的方法
@Repository
public interface TeacherRepo extends JpaRepository<Teacher, Long>
{
@Query(value="SELECT t.teacherName,s.studentName FROM Teacher t left join t.students s")
public ArrayList<User> findByStudent(Pageable paging);
}在您的服务类中调用此repo方法
public ArrayList<Teacher> findByStudent()
{
// TODO Auto-generated method stub
Pageable paging = PageRequest.of(0, 4);
return teacherRepo.findByStudent(paging);
}这样,您的分页将返回4个学生记录。
注意-您可以根据需要添加where条件、分页、排序详细信息
https://stackoverflow.com/questions/64068236
复制相似问题