java - 使用 JPA 中的父实体获取子实体

标签 java spring spring-boot jpa spring-data-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;
}

我需要执行这些查询:

  1. 按 schoolId 获取所有学生
  2. 按年级 ID 获取所有学生
  3. 按学校 ID 和年级 ID 获取所有学生

如何实现这一目标?

最佳答案

首先,请浏览JPA documentation一点点。寻找Native Queries .

例如第一个:

1) Get all Students By schoolId

@Query("SELECT s FROM Student s WHERE s.school_id = :schoolId")
List<Student> findStudentsBySchoolId(@Param("schoolId") Long schoolId);

考虑到您有以下情况:

  • School 的映射在Student带映射列schoolId .
  • 当然还有一个学生存储库,上面的方法将在其中运行。您可能还想扩展 JPARepository .

另请注意

List<Student> findBySchool_SchoolId(Long id);

Java 中使用下划线命名方法并不是一个好主意。 See this

关于java - 使用 JPA 中的父实体获取子实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60864470/

相关文章:

java - 通过 Fresco 库加载的适配器图像不规则

spring - 是否有通用的 spring-data Exception 类来处理 repo 层抛出的异常?

javascript - 想要读取网络浏览器上显示的网址

Java:如何不仅按名称搜索文件夹中的重复文件,还按大小和内容搜索重复文件?

java - 如何在 GWT 中的 celltable 的子行上添加 clickHandler

java - 如何创建pdf文件并在spring boot应用程序的邮件中发送

java - 错误 : "java.sql.SQLSyntaxErrorException: Table ' db_example. 表'不存在”即使 Hibernate 说该表已创建

java - 使用 Artifactory 代理到 Docker Hub 并在防火墙内使用测试容器进行测试

spring - Run As : Spring Boot App and Run As: Java Application? 之间有区别吗

java - 使用 java RESTful Web 服务在数据库中创建新记录