2012-12-31 42 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