2012-11-23 3 views
4

엔티티 북에 대한 술어를 작성할 때 왼쪽에 범주 (ManyToMany) 조인을 허용하여 카테고리에 AND 술어를 추가 할 수 있습니다. . 단순히 달성 할 수있는 나는 JPAQuery 인스턴스가있는 경우 :술어를 작성할 때 JPAQuery 인스턴스가없는 경우에 참여하는 방법

if (catId != null) { 
    jpaQuery.leftJoin(book.categories, category); 
    jpaQuery.where(category.id.eq(catId).or(category.parentCategory.id.eq(catId))); 
} 

를하지만 조건부를 구축 할 때 내가 가진 아직 JPAQuery하지 않습니다. 따라서 술어 자체 내가 할 수있는 :

booleanBuilder.and(category.id.eq(this.categoryId).or(category.parentCategory.id.eq(this.categoryId))); 

그러나 leftjoin가 어떻게 jpaQuery 인스턴스없이 진행 할

?

+0

이 뉴스와 관련된 모든 뉴스 는요? 나는 그 곳 곳곳에서 너무 많은 번거 로움없이 조인 가져 오기의 우아한 솔루션을 찾고 있습니다. 분명히 Spring 데이터는 유스 케이스가 더 복잡하고 그 다음에 하나의 "시나리오에서 선택하십시오"를 기본 예제에서와 같이 생각하지 않았습니다. .. –

+0

넵 나는 해결책을 찾았습니다. 스프링 인터페이스에 대한 확장 코드를 만들었습니다 : 공용 인터페이스 TworkQueryDslRepository JpaRepository를 확장하고 prep 메소드를 추가했습니다. JPAQuery createQuery(); 그리고 새로운 매개 변수를 가진 모든 실행 메소드를 JPAQuery : ex age findAll (JPAQuery jpaQuery, Predicate 술어, Pageable pageable); 목표는 Repo를 빌드하고 나에게 JPAQuery를 제공하여 가져올 수 있도록하는 것입니다. 두 번째 단계에서는 거의 표준 repo API를 호출 할 수 있지만 제 경우에는 JPAQuery를 첫 번째 매개 변수로 사용합니다. 때때로 PullResquest를 만들어야합니다. –

답변

1

Querydsl에서 왼쪽 조인을 선언하려면 쿼리가 필요합니다. 이것이 스프링 데이터와 관련된 것이라면, API 레벨의 솔루션을 제안 할 수 있습니다.

book.categories.any()는 category 대신 사용할 수 있지만 join 대신 하위 쿼리를 사용하여 JPQL과 다르게 serialize됩니다.

+0

스프링 데이터에서이 작업을 수행하려고하는데, 포인터에 대한 감사가 API에 문제가 있습니다. – JBCP