java - 如何在 QueryDSL BooleanExpression 中使用 SubQeryExpression
问题描述
我有两个由@ManyToMany、标准和规则链接的实体。两者都可以激活或不激活,规则也可以是关键的或不重要的。他们的实体中有相应的字段。我需要一个查询,仅检索已激活且至少具有一个已激活关键规则的条件。以下是我编写子查询的方法:
BooleanExpression subExpression = QRule.rule.enable.eq(true).and(QRule.rule.critical.eq(true));
BooleanExpression expr = QCriteria.criteria.enable.eq(true)
.and(QCriteria.criteria.rules.any().eq(subExpression));
List<Criteria> crits = criteriaRepository.findAll(expr);
我已经看到我使用子表达式的 .eq() 可以采用 SubQueryExpression 但我找不到有关如何使用它们的任何信息。
我正在使用 QueryDSL 4.1.4。
解决方案
您应该使用存在子查询来模拟“至少有一个激活的关键规则”要求。
推荐阅读
- crystal-reports - 如何确保水晶报表的详细信息部分之间没有分页符?
- gitlab - GitLab 502 错误和独角兽总是重启
- logstash - 我如何在 logstash-elasticsearch 过滤器插件中使用聚合
- logic - 推理 `exactly` 和 `some ` 子句
- spring-data-jpa - Spring Data JPA:如何在过滤实体字段以使其首次出现时检索实体列表
- android - SQLite DBMS 和 Room ORM 中插入查询的默认冲突策略是什么?
- scala - Sbt 任务仅评估一次
- php - Laravel 使用 parsedown 库建立内部链接
- c# - C# 使用 system.diagnostics 进程使用现有正在运行的进程打开文件
- android - 在 org.gradle.api.Project 类型的根项目 '..' 上找不到参数 [build..] 的方法 android()