從課程到學生存在一對多的單向映射
@Entity
Course {
@OnetoMany
List<Student> students;
}
@Entity
Student {
name;
age;
}
資料庫架構看起來像課程 ID 名稱持續時間費用
學生姓名年齡 course_id
我正在使用 Jpa 存盤庫進行獲取。
誰能告訴我如何判斷某個學生屬于哪門課程?請注意,我沒有使用雙向映射,因此學生物體類沒有參考課程。
uj5u.com熱心網友回復:
您的映射和資料庫架構很好,您的映射情況沒有什么特別之處 - 它只是一個單向映射,如果您不需要它,則無需強制雙向映射和/或獲取學生資料.
JPQL:“從課程 c 中選擇 c 加入 c.students s where s.name = :name”
帶彈簧靴
@Query("Select c from Course c join c.students s where s.name = ?1")
Course findCourseByStudentName(String name);
需要查看您的資料庫設定以確定課程是否唯一 - 我猜不是,在這種情況下,您需要回傳可能注冊了該學生姓名的課程串列。
uj5u.com熱心網友回復:
您的問題出在資料庫設計中。沒有任何高性能代碼可以將您從這種命運中拯救出來。
通常,Students 和 Courses 之間有一個連接表,它至少維護兩個鍵 - studentId 和 courseId。
需要了解學生的課程嗎?從連接表中選擇 studentId = 'X'。需要了解課程中的學生嗎?從連接表中選擇 courseId = 'Y'。
uj5u.com熱心網友回復:
我不會評論資料庫設計。但解決這個問題很簡單。
基本上你需要正確地實作這種關系。
@Entity
public class Course {
private Long id;
@OnetoMany(mappedBy = "course")
List<Student> students;
}
@Entity
public class Student {
private Long id;
private String name;
private Integer age;
@ManyToOne
@JoinColumn(name="course_id")
private Course course;
}
然后只需使用吸氣劑
Student student = studentRepo.findStudentById(123);
Course course = student.getCourse();
這是完整的參考:https : //www.baeldung.com/hibernate-one-to-many
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/311318.html
上一篇:在粘貼前修改剪貼板的perl命令
下一篇:匹配特殊字符的重碼法
