gpt4 book ai didi

java - 列表元素的两个条件的 boolean 表达式

转载 作者:行者123 更新时间:2023-12-02 01:09:39 25 4
gpt4 key购买 nike

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

这是场景:

我有一个设备,这个设备属于一个实验室,该实验室有一个团队。该实验室团队的一些成员可以注册新设备,有些则不能,这是由 boolean 属性“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();

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

关于java - 列表元素的两个条件的 boolean 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57698286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com