当前位置: 首页 > 知识库问答 >
问题:

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

韩靖琪
2023-03-14

我正在使用spring-data-jpa和querydsl(3.2.3)
在一个场景中,我正在基于用户filer/input创建一组谓词。所有这些都来自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)

我的spring-data存储库实现了CustomQueryDSLJParepository,它又扩展了JParepositoryQueryDSLPredicateExecutor
我希望这方面的答案是直接的,但我对querydsl还是个新手,到目前为止还没有找到解决方案

共有1个答案

胥博文
2023-03-14

这里是Jaiwo99的答案的一个更JPAesque形式的变体

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

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

 类似资料:
  • 问题内容: 我正在使用spring-data-jpa和querydsl(3.2.3) ,有一种情况是我根据用户文件管理器/输入创建谓词集。所有这些都来了。 我的简化模型如下所示: 现在,我正在努力的是这个查询: 因此,基本上我需要以类似的格式进行子查询,该格式将获取所有公司编号并将其设置为in()表达式。 我的spring- data存储库实现了反过来扩展和的工具。 我希望答案很简单,但是我对qu

  • 我将以下SQL作为本机查询运行,但我想知道是否有一种方法可以在JPAQuery中运行它,以便使用元组或类实例化。 为了精确起见,我使用了别名而不是qtypes。

  • 我试图使用一个投影来从一个实体中提取数据,它有一些关系。然而。投影上的构造函数接受三个参数;一个集合,整数和另一个整数。如果没有这个集合作为参数,这一切都很好,但是一旦我添加了这个集合,我就开始得到SQL语法查询错误。 这里有一个我正在使用的例子... 下面是我正在使用的查询(不完全相同,因为这是我正在处理的问题的简化版本).... 所以,我想我的主要问题是,我如何将一个集合作为一个对象包含在投影

  • 我有这样的查询语句: 如果我在jpa中与querydsl(com.querydsl)一起使用它(这是scala,不重要): 当我调试测试时,它总是抛出 对方法public abstract Purchase PurchaseRepository.GetByTrackingNo(java.lang.String)使用命名参数,但在注释查询“从T_EC_PURCHASE t中选择t.pt_note,t

  • 问题内容: 我正在使用QueryDSL构建SQL查询,该查询包含以联合身份加入的多个子查询。这是我查询的基础: 然后,我有几个子查询来获取与事务关联的客户端名称。我将示例缩减为两个: 如何将它们结合在一起,并通过我的主要查询加入结合?这是我目前的尝试: 这样可以编译,但是在尝试运行时会在运行时生成无效的SQL 。可能的错误: 子查询联合的语法。 命名子查询结果列的表达式与中使用的路径表达式之间的连

  • 通过一些重要的挖掘,我们发现spring-data-rest with query-dsl可以让REST API客户机轻松地过滤实体的大多数属性。 这个问题也很有用:Spring Data REST的QueryDSL集成是否可以用于执行更复杂的查询?