QueryDsl-集合表达式中的子查询
我正在使用spring-data-jpa和querydsl(3.2.3)
,有一种情况是我根据用户文件管理器/输入创建谓词集。所有这些都来了BooleanExpression
。
我的简化模型如下所示:
@Entitypublic class Invoice {
@ManyToOne
private Supplier supplier;
}
@Entity
public class Supplier {
private String number;
}
@Entity
public class Company {
private String number;
private boolean active
}
现在,我正在努力的是这个查询:
SELECT * FROM Invoice WHERE invoice.supplier.number in (SELECT number from Company where active=true)
因此,基本上我需要以CollectionExpression
类似的格式进行子查询,该格式将获取所有公司编号并将其设置为in()表达式。
我的spring-
data存储库实现CustomQueryDslJpaRepository
了反过来扩展JpaRepository
和的工具QueryDslPredicateExecutor
。
我希望答案很简单,但是我对querydsl还是很陌生,到目前为止还没有找到解决方案。
回答:
这是jaiwo99的答案的一种变体,形式更像JPAesque
BooleanExpression exp = invoice.supplier.number.in(new JPASubQuery() .from(company)
.where(company.active.isTrue())
.list(company.number));
随意将其合并为原始答案。
以上是 QueryDsl-集合表达式中的子查询 的全部内容, 来源链接: utcz.com/qa/427206.html