2012-11-20 2 views
2

는 내가 세 테이블 ADDRESSCLASSJPA2 Criteria Query에서 여러 조인을 사용하려면 어떻게해야합니까?

내가 같은 주소를 가진 모든 학생을 데려와 같은 클래스에 갈 필요가

STUDENT ManyToOne ADDRESS STUDENT ManyToMany CLASS

STUDENT을 가지고 둠 다운 진짜 문제

의 버전입니다.

는 SQL 단지 (단지 즉석에서이를 작성하고 그것을 테스트하지 않은 경우) 될

Select * from STUDENT s join ADDRESS a on s.addressId = a.addressId join CLASS c on c.classId = s.classId

은 지금은 기준 및 동안 새로운 오전하는 것은 reasonbly 지금까지, 나는 완전히 오전있게 사용되었습니다 이 작업을 어떻게해야합니까? Oracle, Jboss 등의 문서가 어디에 있는지 살펴 보았지만이 작업을 수행해야하는 방식과 어둠 속에서 촬영 한 모든 찌르다는 표시가 실패했습니다. 그럼에도 비슷한 음색에는 많은 질문이 있지만 읽으면 뭔가 묻습니다.

+0

당신이 시도한 것을 보여주십시오. – Quincy

+1

질문에 대한 답변이있을 것입니다. http://stackoverflow.com/questions/3424696/jpa-criteria-api-how-to-add-join-clause-as-general-sentence-as-possible – CycDemo

답변

0

학생 클래스가 JPA에서 관리하는 컬렉션을 정의한다고 가정하면 JPQL 쿼리에 조인을 정의 할 필요가 없습니다. Student 객체를 검색하면 OpenJPA는 자동으로 주소와 클래스를 검색합니다.

0

이 시도 할 수 있습니다 :이 전

Root<STUDENT> from = criteriaQuery.from(STUDENT.class); 
Join<STUDENT, ADDRESS> joinAddress = from.join(STUDENT_.address); 
Join<STUDENT, CLASS> joinClass = from.join(STUDENT_.class); 

당신이 당신의 엔티티에서 메타 클래스를 생성한다.

javac -classpath "PATHTOLIBRARIES\openjpa-all-2.2.2.jar" -Aopenjpa.metamodel=true STUDENT.java ADDRESS.java CLASS.java 

PS : 당신이 'from.join'그냥 resurned 값을 무시할 수의 결과에 여분의 아무것도 할 필요가없는 경우.

관련 문제