gpt4 book ai didi

java - QueryDsl - 集合表达式中的子查询

转载 作者:IT老高 更新时间:2023-10-28 13:56:01 25 4
gpt4 key购买 nike

我正在使用 spring-data-jpa 和 querydsl (3.2.3)
我有一个场景,我正在根据用户文件管理器/输入创建一组谓词。所有这些都来自 BooleanExpression

我的简化模型如下所示:

@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
}

现在,我正在努力解决这个问题:

SELECT * FROM Invoice WHERE invoice.supplier.number in (SELECT number from Company where active=true)

所以基本上我需要以 CollectionExpression 之类的格式进行子查询,该格式将获取所有公司编号并将其设置为 in() 表达式。

我的 spring-data 存储库实现了 CustomQueryDslJpaRepository,后者又扩展了 JpaRepositoryQueryDslPredicateExecutor
我希望这个问题的答案是直截了当的,但我对 querydsl 很陌生,到目前为止还没有找到解决方案。

最佳答案

这里是 jaiwo99 答案的变体,采用 JPAesque 形式

BooleanExpression exp = invoice.supplier.number.in(new JPASubQuery()
.from(company)
.where(company.active.isTrue())
.list(company.nu‌​mber));

请随意将其合并到原始答案中。

关于java - QueryDsl - 集合表达式中的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21826773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com