2012-12-31 47 views
0

我有兩張表Course,和Subject都有很多關係。如何在HQL中進行加入

第三張表是Course_Subject

我必須執行join才能獲取所有課程。

我試圖聯接表所示:

hqlQuery="FROM Course c inner join fetch c.Course_Subject as s where c.id=s.courseId and s.subjectId=:subjectId"; 

卻是露出NullpointerException

請給我建議。

+0

@但如何改善它? –

+0

謝謝! Vels4j。 –

回答

0

入住這

hqlQuery="select c.field1,c.field2,s.field1 from Course c 
     inner join c.course_subject as s"; 

但是爲什麼你需要這個?默認情況下,您可以通過映射獲得課程科目,如

cource.getSubjects(); 
+0

其實我想通過使用主題過濾課程。 –

+0

,你可以在主題類中使用映射。 'subject.getCourses();' – vels4j

+0

當我將Course Class Mapping設置爲Subject Class時,它顯示如下錯誤: - >在對象圖中檢測到一個循環。這將導致無限深的XML:[email protected] - > [email protected] - > [email protected]這是什麼? –

3

HQL查詢使用實體及其關聯。從來沒有表和他們的專欄。它知道哪些表和列實體鏈接在一起,所以你不需要在連接查詢中重複它。要獲取具有給定科目的所有課程,你只需要

select c from Course c 
inner join c.subjects s 
where s.id = :subjectId