스프링 데이터 jpa 및 querydsl (3.2.3)을 사용하고 있습니다.
사용자 필러/입력을 기반으로하는 조건부 집합을 만드는 시나리오가 있습니다. 이 모든 것은 BooleanExpression
입니다. 내가 가져옵니다 형식처럼 CollectionExpression
에서 하위 쿼리 할 필요가 그래서 기본적으로QueryDsl - 컬렉션 표현식의 하위 쿼리
SELECT * FROM Invoice WHERE invoice.supplier.number in (SELECT number from Company where active=true)
:
이제@Entity
public class Invoice {
@ManyToOne
private Supplier supplier;
}
@Entity
public class Supplier {
private String number;
}
@Entity
public class Company {
private String number;
private boolean active
}
가, 내가 무엇을 고민하고있어이 쿼리입니다 : 다음과 같은
내 단순화 된 모델 본다 모든 회사는 번호를 입력하고 in() 표현식으로 설정합니다.
내 스프링 데이터 저장소는 CustomQueryDslJpaRepository
을 구현하고 JpaRepository
및 QueryDslPredicateExecutor
까지 확장합니다.
나는 이것에 대한 답이 간단하기를 희망하지만, 나는 querydsl에 대해 아주 새롭고 지금까지 해결책을 찾지 못했다.
QueryASL 4에서 'JPASubQuery'와 같은 기능을 사용할 수 없습니다.이 답변을 다음 언어로 변환했습니다 :'BooleanExpression exp = invoice.supplier.number.in (JPAExpressions.(회사) .where (company.active.isTrue()) .select (company.nu mber)), ' –
@OliverHernandez 다 대일 관계에서도 같은 결과를 얻으려면 어떻게해야합니까? https://stackoverflow.com/questions/44830387/how-to-create-predicate-booleanexpression-for-many-to-many-relations-in-jpa –