If you have a Student entity and a Course entity with a Many-to-Many relationship, and you want to fetch all students enrolled in a specific course, how would you typically structure the query in JPA?

4 phương ánCó giải thích

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "By querying the Student entity with a join on the Course entity.". Trong JPA, quan hệ Many-to-Many được ánh xạ thành thuộc tính tập hợp, chẳng hạn Student có courses, nên truy vấn JPQL (Java Persistence Query Language, ngôn ngữ truy vấn trên thực thể) điển hình là SELECT s FROM Student s JOIN s.courses c WHERE c.id = :courseId, lấy đúng tập sinh viên cần trong một câu truy vấn. Phương án "By querying the Course entity and accessing its students collection." cũng lấy được dữ liệu, nhưng đó là nạp một Course rồi duyệt quan hệ (thường kích hoạt lazy loading thêm một truy vấn) chứ không phải dựng một truy vấn JPA lọc sinh viên, nên không phải cách cấu trúc truy vấn được hỏi. "By querying the join table directly." sai vì bảng nối không phải thực thể, JPQL không truy vấn được nó trừ khi viết SQL thuần, làm mất lợi ích của ORM. "By querying the Student entity and filtering based on the course ID in the Student table." sai vì với Many-to-Many, bảng Student không có cột course ID; khoá ngoại nằm ở bảng nối.

Cùng phần 1

Xuất hiện trong 1 bộ đề