java - 使用 JPA 中的父实体获取子实体
问题描述
我在下面给出了这些实体,我想执行一些查询,但我不确定如何在 JPA 中执行。
学校.java
@Data
@Builder
public class School {
private String schoolName;
private int schoolId;
private List<Grade> grades;
}
等级.Java
@Data
@Builder
public class Grade {
private String grade;
private int gradeId;
private List<Student> students;
}
学生.java
@Data
@Builder
public class Student {
private String studentName;
private int studentId;
private List<Subject> subjects;
}
主题.java
@Data
@Builder
public class Subject {
private String subjectName;
private int subjectId;
}
我需要执行这些查询:
- 通过 schoolId 获取所有学生
- 通过gradeId获取所有学生
- 通过 schoolId 和 GradeId 获取所有学生
如何做到这一点?
解决方案
首先,请浏览一下JPA 文档。寻找Native Queries
。
例如第一个:
1)通过schoolId获取所有学生
@Query("SELECT s FROM Student s WHERE s.school_id = :schoolId")
List<Student> findStudentsBySchoolId(@Param("schoolId") Long schoolId);
考虑到您有以下情况:
School
inStudent
与映射列的映射schoolId
。- 并为学生提供一个存储库,上述方法将在其中使用。您可能还想扩展
JPARepository
.
另请注意
List<Student> findBySchool_SchoolId(Long id);
在中使用下划线命名方法不是一个好主意Java
。看到这个
推荐阅读
- r - 运行 R 脚本时的问题
- vue.js - vue3、vite 和 vue-router@next,无法解析组件 router-view
- flutter - 无法使用 dio post 请求上传图片
- request - 有没有办法在移动设备上更改 apk 的目标 api?现在是 19 岁,我需要至少 29 岁。提前谢谢
- docker - 构建并运行 docker 容器作为 asp.net 核心中集成测试的一部分
- c++ - 程序由于某种原因无法运行,有人可以帮我解决它吗
- discord.py - 我正在尝试在 discord.py 中发出船舶命令
- python - 一些网站没有在 selenium 无头模式下完全加载/渲染
- java - 根据内容自动调整窗口大小
- swift - 基于 VIewModel 状态更新 SwiftUI 视图?