首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用嵌套循环的Spring Book JPA中的分页

使用嵌套循环的Spring Book JPA中的分页
EN

Stack Overflow用户
提问于 2020-09-26 00:44:09
回答 1查看 220关注 0票数 0

我正在尝试实现分页。我有两张桌子,一位老师和一位学生。对于每个老师,都有多个学生。现在我得到了一个TeacherNames的列表,对于每个老师,我必须找到它的所有学生并将他们添加到列表中,最后返回它。我得到的页码和大小也作为输入。

代码语言:javascript
运行
复制
List<TeacherEntity> teacher = TeacherRepo.findByName(TeacherNames);
Teachers.forEach(teacher - > {
    List<Student> students = studentRepo.findByTeacherName(teacher);
    studentDTO.addAll(students);
});

return StudentDTO;

如果我只能在teachersRepo中查询,我知道如何实现分页。但是我不知道当有嵌套的时候我该怎么做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-26 01:00:37

我假设你在学生和老师之间有@ManyToMany关系。如果不是,则必须先创建一个,然后再继续。创建关系的示例代码

代码语言:javascript
运行
复制
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
}

现在,在教师存储库中,添加一个在学生和教师之间进行连接的方法

代码语言:javascript
运行
复制
@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方法

代码语言:javascript
运行
复制
public ArrayList<Teacher> findByStudent() 
    {
        // TODO Auto-generated method stub
        Pageable paging = PageRequest.of(0, 4);
        return teacherRepo.findByStudent(paging);
    }

这样,您的分页将返回4个学生记录。

注意-您可以根据需要添加where条件、分页、排序详细信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64068236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档