私は4つのエンティティを持っています:
User
、Teacher
、Student
、Course
および 4 つのテーブル:
t_user、t_teacher_course、t_student_course、t_course
Teacher
およびStudent
はUser
(記述子を使用して)拡張し、に格納されているおよびの関係と@ManyToMany
関係を持っていますCourse
(User
持っていません)
。Teacher
t_teacher_course
Student
t_student_course
ここで、コースを持つすべてのユーザー (存在する場合) を 1 つのクエリで選択したいと思います
select u from User u left join fetch u.courses c
(ユーザーにはコースがないことに注意してください)。この選択により、次のようなものが生成されます。
select
...
from
T_USER user0_
left outer join
T_TEACHER_COURSE course1_
on user0_.USERID_=courses1_.TEACHER_
left outer join
T_COURSE course2_
on courses1_.LANE_=course2_.COURSENAME_
where
user0_.GROUP_=?
ご覧のとおり、Hibernate はt_student_courseテーブルに参加していません。
Hibernate 4.1Final を使用しています
質問: Hibernate はそのようなクエリをサポートしていますか?
Student
a)サポートしている場合、エンティティのコースを取得しなかったのはなぜですか?
b) サポートしていない場合、JPQL を使用してコースを持つすべてのユーザーを選択するにはどうすればよいですか?