Lor*_*der 3 spring hibernate jpa spring-data-jpa spring-boot
我目前正在学习 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()....
}
Run Code Online (Sandbox Code Playgroud)
课程表实体类
@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();
}
Run Code Online (Sandbox Code Playgroud)
注册类表的实体类
public class EnrolledCourses {
@Id
String enrollID;
String courseid;
String studentid;
Date joined;
getters and setters()...
}
Run Code Online (Sandbox Code Playgroud)
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> {
}
Run Code Online (Sandbox Code Playgroud)
我的需要
现在我正在检索给定机构中给定课程的注册学生...通过使用此 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' ;
Run Code Online (Sandbox Code Playgroud)
现在我需要在 CourseRepository (或 enrolledstudent 存储库)中实现此内部联接查询
如何实现这一目标?
请指导我
如果我们在 EnrolledCourses 实体中使用 hibernate 映射,例如
@Entity
public class EnrolledCourses {
@Id
String enrolledId;
@ManyToOne
Student student;
@ManyToOne
Course course;
Date joined;
getters and setters()...
}
Run Code Online (Sandbox Code Playgroud)
从上面的映射中,无需使用任何 SQL 查询,您就可以使用接口中的方法检索特定课程下的所有学生
@Repository
public interface EnrolledRepository extends CrudRepository<EnrolledCourses,String> {
List<EnrolledCourses> findByCourse_CourseId(String courseId);
}
Run Code Online (Sandbox Code Playgroud)
如果我们在实体之间有一些关系,我们可以使用 Jpa 轻松检索所有字段。
| 归档时间: |
|
| 查看次数: |
7155 次 |
| 最近记录: |