2012-12-31 2 views
0

두 개의 테이블 코스가 있고 Subject는 모두 many to many 관계입니다.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 class에 Course Class Mapping을 설정할 때'subject.getCourses();' – vels4j

+0

과 같은 오류가 발생합니다 : -> 객체 그래프에서주기가 감지되었습니다. 이렇게하면 무한히 깊은 XML이 생성됩니다. [email protected] -> [email protected] -> [email protected]이게 무엇입니까 ?? –

3

HQL 쿼리는 엔티티와 관련을 사용합니다. 테이블과 컬럼을 절대로 사용하지 마십시오. 또한 엔티티가 어떤 테이블과 열을 함께 연결했는지 알기 때문에 조인 쿼리에서 엔티티를 반복 할 필요가 없습니다. 주어진 과목을 가지고있는 모든 과정을 가져 오려면 단지

select c from Course c 
inner join c.subjects s 
where s.id = :subjectId 
관련 문제