如何在 QueryDSL BooleanExpression 中使用 SubQueryExpression

问题描述 投票:0回答:1

我有两个通过 @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。

java hibernate subquery querydsl
1个回答
0
投票

您应该使用存在子查询来模拟“至少有一个活动的关键规则”要求。

© www.soinside.com 2019 - 2024. All rights reserved.