列表元素的两个条件的布尔表达式

Boolean Expression for two conditions of an element of a list

我在这里使用 QueryDSL 来构建谓词,问题是这个谓词需要两个 AND 条件,我被困在这里,因为我不知道如何应用第二个条件。

场景是这样的:

我有一个设备,这个设备属于一个实验室,实验室有一个团队。该实验室团队的一些成员可以注册新设备,而另一些则不能,这是由布尔属性"registerEquipment" 定义的。所以我的谓词必须有这些条件:

*用户必须是实验室团队的成员并且属性 "registerEquipment" 设置为 true 才能看到此设备。我尝试了以下代码:

BooleanExpression registerEquipmentAndTeamMember = QEquipment.equipment.laboratory.team.any().registerEquipment.and(QEquipment.equipment.laboratory.team.any().person.id.eq("AQ88"));

但是不起作用,因为它首先执行 registerEquipment 条件,然后执行 teamMember。我想知道如何同时为团队成员执行这两个条件。

我明白了。我不得不使用 JPAExpression。这是正确的代码:

QEquipment equipment = QEquipment.equipment;
QTeam team = QTeam.team;
QLaboratory laboratory = QLaboratory.laboratory;

Predicate predicate = JPAExpressions
       .selectOne()
       .from(team)
       .where(equipment.laboratory.id.eq(laboratory.id),
              laboratory.id.eq(team.laboratory.id),
              team.registerEquipment.eq(Boolean.TRUE),
              team.person.id.eq(userService.getCurrentId())).exists();

现在会同时过滤有权限注册设备的实验室成员