当前位置: 首页 > 知识库问答 >
问题:

如何在存储库中使用Spring Boot JPA/Hibernate进行内部连接?

吕新
2023-03-14

我目前正在学习spring boot、hibernate和spring boot JPA

我为教练中心和机构开发了一个课堂应用程序。

其中,学生在一个学院注册了多个课程

学生实体类:

@Entity
@Table(name = "student")
public class Student  {

    private String name;

    private String dob;

    private String gender;

    private String address;

    private String email;

    private Integer mobile;

    private String joined;

    private Integer instID;

    @Id
    private String studentid;

    getters and setters()....
}

课程表实体类

@Entity
@Table(name = "courses")
public class Course {

    private String name;

    private String description;

    private String logo;

    private String start;

    private String end;

    private Integer fee;
    @Id
    private String courseid;


    private Integer instID;

    getters and setters();
}

已注册类别表的实体类别

public class EnrolledCourses {

    @Id
    String enrollID;

    String courseid;
    String studentid;

    Date joined;

    getters  and setters()...

}

JPA仓库

 @Repository
    public interface StudentRepository extends CrudRepository<Student, String> {
        Student findTopByInstIDOrderByStudentidDesc(int instID);
    }

@Repository
public interface CourseRepository extends CrudRepository<Course,String> {
}

@Repository
public interface EnrolledRepository extends CrudRepository<Course,String> {
}




我的需要

现在我正在检索某个学院某个课程的注册学生。。。通过使用此MySQL查询

SELECT 
`enrolled_courses.enrollID`,
`student.name`, `student.studentid`
FROM `enrolled_courses`
INNER JOIN `student`
WHERE
`enrolled_courses.studentid` = `student.studentid`
AND
`student.instID` = 13
AND
`enrolled_courses.courseid` = '13I01C' ;


现在,我需要在CourseRepository(或enrolledstudent repo)中实现这个内部连接查询



如何做到这一点?

请指引我

共有1个答案

雍骏俊
2023-03-14

如果我们在EnrolledCourses实体中使用hibernate映射,如

@Entity
public class EnrolledCourses {

    @Id
    String enrolledId;

    @ManyToOne
    Student student;

    @ManyToOne
    Course  course;

    Date joined;

    getters  and setters()...

}

从上面的映射,而不使用任何SQL查询,你可以检索到所有的学生谁属于一个特定的课程通过使用界面中的方法

@Repository
 public interface EnrolledRepository extends CrudRepository<EnrolledCourses,String> {
     List<EnrolledCourses> findByCourse_CourseId(String courseId);
 }

如果我们在实体之间有一些关系,我们可以使用Jpa轻松检索所有字段。

 类似资料:
  • 如何在临时文件中获取名称以便在此查询中设置? 谢谢。

  • 首先,我是Spring Hibernate开发的新手。遵循了很多教程书籍,我创建了一个主要基于Spring、Hibernate标准的示例应用程序,我已经开始为Repository(DAO)方法编写一些测试用例,即查找、查找、保存、删除。 当我执行测试类时,这真是太疯狂了,并不是所有的测试用例都能正确地为ex执行。尤其是find 当我完全执行以上所有测试用例时 甚至更新测试用例的行为也很奇怪,因为在

  • 什么是让kscript从外部maven存储库加载jdbc的正确方法? 我在脚本的开头有: 我收到此错误: [kscript]解析依赖关系...[kscript]解析oracle.jdbc:ojdbc8:12.2.0.1...线程“main”中出现异常Java . lang . noclassdeffounderror:org/IETF/jgss/GSS exception at com . nin

  • 我刚刚学习了如何使用存储库Java进行分页(我有一个BBDD MySQL)。我基本上在我的模型(pregunta)中使用DAO,并将我的模型转换为我的DTO(preguntaDTO)。 我的控制器接收分页参数。 但是现在,我需要在我的JQUERY(文本和id)中使用参数。我会试着更好地解释它。我的模型是: 我的搜索,除了分页,必须返回我所有的问题(pregunta),有: 在字段deEnferme

  • 我刚开始冬眠。我需要在postgres中存储文件,列的数据类型是。我在互联网上四处寻找这个案例的工作演示,但我找不到任何。 Hibernate映射:

  • 我在计算引擎中创建了一个实例。 我安装了postgresql 9.6,现在我正在尝试使用pgadmin客户端连接外部ip,但它给了我一个错误 连接到35.224.170.161:5432被拒绝。检查主机名和端口是否正确,邮政局长是否接受TCP/IP连接。连接到35.224.170.161:5432被拒绝。检查主机名和端口是否正确,邮政局长是否接受TCP/IP连接。连接被拒绝:连接被拒绝:连接 我只