gpt4 book ai didi

Spring Data + QueryDSL空谓词+谓词链接

转载 作者:行者123 更新时间:2023-12-04 13:09:22 26 4
gpt4 key购买 nike

让我直接说清楚。
我在一个项目中使用带有QueryDSL的Spring Data JPA,但我自己无法弄清楚。

我在静态方法中有QueryDSL谓词,可以使用参数,并且如果参数不正确,则应返回“空谓词”:

public static BooleanExpression byWhateverId(Long whateverId) {
if(whateverId == null) return [insert magic here];
// if parameter is OK return usual predicate
return QClass.property.whateverId.eq(whateverId);
}

现在,我希望能够使用AND/OR操作符链接这些谓词:
someRepository.findAll(byWhateverId(someParam).and(bySomethingElseId(1));

这里的问题是,在这一点上,我不知道'someParam'是否为null(当然我可以检查,但是有很多IF)。
我也知道我可以使用BooleanBuilder类,但这似乎也需要很多代码。

有谁知道可以插入什么而不是“[在这里插入魔法]”?
或者也许我在某处缺少某物...

谢谢!

最佳答案

您可以为byWhateverIdbySomethingElseId中的不匹配谓词返回null,并通过ExpressionUtils.allOf()组合谓词

在你的情况下

Predicate where = ExpressionUtils.allOf(byWhateverId(someParam), bySomethingElseId(1));
someRepository.findAll(where);

关于Spring Data + QueryDSL空谓词+谓词链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27090122/

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