У меня есть 4 сущности:Hibernate наследования запроса
User
, Teacher
, Student
, Course
и 4 таблицы:
t_user, t_teacher_course, t_student_course, t_course
Teacher
и Student
расширяет User
(с descriminators) и имеют @ManyToMany
отношений с Course
(User
не имеет) Teacher
's отношений хранятся в t_teacher_course
и Student
' отношения с хранятся в t_student_course
.
Теперь я хочу, чтобы выбрать все пользователь с курсами (если они есть) в одном запросе 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_=?
As вы можете ясно видеть, Hibernate не присоединился к с t_student_course стол
Я использую Hibernate 4.1Final
Вопрос: поддержка ли Hibernate таких запросов
а) если поддерживает, то почему он не сделал надуманные курсы для Student
лица?
b) если вы не поддерживаете, как я могу выбрать всех пользователей с их курсами, используя JPQL?
Uau! Переименование полей решило проблему! Большое спасибо! Перед тем, как ответить, мне нужно было сделать 3 выбора. Я думаю, что Hibernate должен предупреждать о ** двусмысленности ** –