2014-09-15 2 views
7

나는이 같은 쿼리를 실행하려고 :관련없는 엔터티를 남겨 두는 방법은 무엇입니까?

QA A = QA.a; 
QB B = QB.b; 
... 
from(A) 
.leftJoin(B).with(B.name.eq(A.nameSomething)); 

(A와 B 실체는 관련이없는) 나는 항상이 오류 받고 있어요 :

Caused by: org.hibernate.hql.ast.QuerySyntaxException: Path expected for join! 

내가 수 있도록하고 싶습니다를 왼쪽은 querydsl을 사용하여 관련이없는 엔티티에 참여합니다. 전혀 가능합니까? 유일한 방법은 원시 Oracle 쿼리를 작성하는 것입니다.

답변

1

JPA 기준을 말하는 것으로 가정합니다. innerJoin, leftOuterJoin은 O-O 시스템에서 합류하는 유일한 논리적 인 관계이기 때문에 관계에 참여하기위한 것입니다.

entity.field의 평등을 entity2.field (데이터베이스에 FK가없고 클래스에 관계가없는 경우)와 비교하려면 WHERE 절에서 모든 필터처럼 처리하십시오. 다음이 관련이없는 단체에 가입 JPA

5

하지 Querydsl JPA 불가능하다 참조 그래서 만약

은 분명히 QueryDSL는 자신의 구문/규칙이 있습니다. Querydsl JPA는 내부적으로 JPQL을 사용하고 이러한 제한 사항을 상속합니다.

+0

그래서 엔티티가 조인 할 수 있으려면 Java 모델과 데이터베이스 모두에 관계가 있어야합니다. 그렇다면 n : m 조인 테이블에서 기존 항목을 확인해야 할 경우 Java의 조인 테이블 항목을 모델링하고 해당 오브젝트를 'n'측과 연관시켜야합니다. 모델. 옳은? – sorrymissjackson

+2

네, 맞습니다. 또는 소스에서 다중을 사용하고 where 부분의 조인 조건을 설명 할 수 있습니다. –

+0

이제 내가 바보라고 부르는거야! 그 죄송합니다 ! – Adelin

관련 문제