Hibernate 如何在HQL中执行连接

Hibernate 如何在HQL中执行连接,hibernate,Hibernate,我有两张桌子,当然,两个主题都是多对多的关系 第三个表格是课程主题 我必须执行join以获取所有课程 我尝试加入表格,如下所示: hqlQuery="FROM Course c inner join fetch c.Course_Subject as s where c.id=s.courseId and s.subjectId=:subjectId"; 但它显示的是NullpointerException 请给我提建议。检查这个 hqlQuery="select c.field1,c.f

我有两张桌子,当然,两个主题都是多对多的关系

第三个表格是课程主题

我必须执行
join
以获取所有课程

我尝试加入表格,如下所示:

hqlQuery="FROM Course c inner join fetch  c.Course_Subject as  s where c.id=s.courseId and s.subjectId=:subjectId";
但它显示的是
NullpointerException

请给我提建议。

检查这个

hqlQuery="select c.field1,c.field2,s.field1 from Course c 
         inner join c.course_subject as s";
但你为什么需要这个?默认情况下,您可以通过如下映射来获取课程的主题

cource.getSubjects();
检查这个

hqlQuery="select c.field1,c.field2,s.field1 from Course c 
         inner join c.course_subject as s";
但你为什么需要这个?默认情况下,您可以通过如下映射来获取课程的主题

cource.getSubjects();

HQL查询使用实体及其关联。从不使用表及其列。而且它知道哪些表和列实体链接在一起,所以不需要在联接查询中重复它。要获取具有给定主题的所有课程,您只需

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

HQL查询使用实体及其关联。从不使用表及其列。而且它知道哪些表和列实体链接在一起,所以不需要在联接查询中重复它。要获取具有给定主题的所有课程,您只需

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

@但如何改进它???@但如何改进它??你们可以在主题类中使用映射<代码>subject.getCourses()当我将课程类映射设置为主题类时,它会显示错误,如:->在对象图中检测到一个循环。这将导致无限深的XML:DAL.Learn。Course@2f730b9a->DAL.Common。Subject@31beefdc->DAL.学习。Course@2f730b9a这是什么?似乎是循环引用。我不知道。你可以在主题课上使用映射<代码>subject.getCourses()当我将课程类映射设置为主题类时,它会显示错误,如:->在对象图中检测到一个循环。这将导致无限深的XML:DAL.Learn。Course@2f730b9a->DAL.Common。Subject@31beefdc->DAL.学习。Course@2f730b9a这是什么?似乎是循环引用。我不知道。