我有两个由@ManyToMany链接的实体,Criterias和Rules。两者都可以激活或不激活,规则也可以是关键的或非关键的。它们的实体中有相应的字段。我需要一个查询,它只检索激活的标准,并且至少有一个激活的关键规则。下面是我所认为的写入子查询的方式:
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。
发布于 2020-10-10 07:44:54
您应该使用exists子查询对“至少有一个激活的关键规则”需求进行建模。
https://stackoverflow.com/questions/64264977
复制