如何在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。

解决方法

您应该使用一个现存子查询来为“至少具有一个活动关键规则”需求建模。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...