hibernate 如何在QueryDSL布尔表达式中使用SubQueryExpression

rbl8hiat  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(76)

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

mutmk8jj

mutmk8jj1#

您应该使用exists子查询来对“至少有一个激活的关键规则”要求进行建模。

相关问题